计算器 用java编写

计算器程序,能够实现基本数学运算等功能:加、减、乘、除正弦、余弦、开平方、指数、二进制数、八进制数、十六进制之间的相互转换 (程序段要有仔细的文字说明)能使用的话 有50分奖励.。。 请各位大侠帮帮忙

第1个回答  2011-06-26
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigDecimal;
import javax.swing.*;
public class TestComputer implements ActionListener{//用于接收操作事件的侦听器接口。对处理操作事件感兴趣的类可以实现此接口,
//而使用该类创建的对象可使用组件的 addActionListener 方法向该组件注册。在发生操作事件时,调用该对象的 actionPerformed 方法。
private boolean append = false;//数字处于替换状态
JTextField jtf = new JTextField(10);//构造一个具有指定列数的新的空 TextField。
private String operator = "+";
private String op1 = "0";
public void actionPerformed(ActionEvent ae){//发生操作时调用。
String com = ae.getActionCommand();//返回与此动作相关的命令字符串。
if("0123456789".indexOf(com)!=-1){//返回第一次出现的指定子字符串在此字符串中的索引。
if(append){//追加
String temp = jtf.getText();//返回此 TextComponent 中包含的文本。
jtf.setText(temp+com);//将此 TextComponent 文本设置为指定文本。
}else{//替换
jtf.setText(com);
append = true;
}
}else if("+-*/".indexOf(com)!=-1){//返回第一次出现的指定子字符串在此字符串中的索引。
op1 = jtf.getText();
operator = com;
append = false;
}else if("=".equals(com)){
String op2 = jtf.getText();
BigDecimal d1 = new BigDecimal(op1);// 将 BigDecimal 的字符串表示形式转换为 BigDecimal。
//BigDecimal不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成
BigDecimal d2 = new BigDecimal(op2);
if("+".equals(operator)){
d1 = d1.add(d2);//返回一个 BigDecimal,其值为(this + augend),其标度为 max(this.scale(), augend.scale())
}else if("-".equals(operator)){
d1 = d1.subtract(d2);//返回一个BigDecimal,其值为(this - subtrahend),其标度为max(this.scale(),subtrahend.scale())
}else if("*".equals(operator)){
d1 = d1.multiply(d2);//返回一个BigDecimal,其值为(this × multiplicand),其标度为(this.scale()+multiplicand.scale())
}else{
d1 = d1.divide(d2,10,BigDecimal.ROUND_HALF_UP);
}//divide() 返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。
jtf.setText(d1.toString());//返回此 BigDecimal 的字符串表示形式,如果需要指数,则使用科学记数法。
append = false;
}else if(".".equals(com)){
String temp = jtf.getText();
if(temp.indexOf(com)==-1){//没有找到
jtf.setText(temp+".");
append = true;
}
}else if("+/-".equals(com)){
String temp = jtf.getText();
if(temp.startsWith("-")){
jtf.setText(temp.substring(1));
}else{
jtf.setText("-"+temp);
}
}else if("Back".equals(com)){
String temp = jtf.getText();
if(temp.length()>0){
jtf.setText(temp.substring(0,temp.length()-1));
}
}else if("CE".equals(com)||"C".equals(com)){
jtf.setText("0");
}
}
public TestComputer(){
JFrame jf = new JFrame("grefr的计算器");//创建一个新的、初始不可见的、具有指定标题的 Frame。
JPanel jp = new JPanel();//创建具有双缓冲和流布局的新 JPanel。
String[] lab = {"Back","CE","C","+","7",
"8","9","-","4","5","6","*","1","2",
"3","/","0",".","+/-","="};
jp.setLayout(new GridLayout(5,4));
//setLayout(LayoutManager mgr)设置此容器的布局管理器。
//GridLayout(int rows, int cols)创建具有指定行数和列数的网格布局。
jtf.setEditable(false);//设置指定的 boolean 变量,以指示此 TextComponent 是否应该为可编辑的
JButton[] jb = new JButton[lab.length];
jf.add(jtf,BorderLayout.NORTH);
for(int i=0;i<jb.length;i++){
jb[i] = new JButton(lab[i]);
jp.add(jb[i]);
jb[i].addActionListener(this);//将一个 ActionListener 添加到按钮中。
}
jf.add(jp);
jf.setSize(300,300);
jf.setLocation(250, 250);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestComputer();
}
}追问

能帮我加上正弦余弦的算发 还有二进制八进制十六进制 还有对数的运算就是log的算法 请帮帮忙!

第2个回答  2011-06-27
你用getText得到屏幕上显示的那些字符串,以 + - * / 为分割符,截取前面的字符串和后面的字符串,然后用double b = Double.parseDouble(a);这个方法转变为浮点数,再进行+ - * / 运算吧~
不知道是不是你要的答案~!呵呵~~

用JAVA编写的科学计算器源代码
以下是一个简单的用Java编写的科学计算器的源代码示例:java import java.util.Scanner;public class ScientificCalculator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);System.out.println("Welcome to the Scientific Calculator!");System.out.println("Ente...

java最基础的代码(java基础代码实例)
importjavax.swing.*;importjavax.swing.border.Border;importjava.awt.*;importjava.awt.event.ActionListener;importjava.awt.event.ActionEvent;importjava.math.BigDecimal;importjava.math.RoundingMode;importjava.util.HashMap;\/ 我的计算器。MyCalculator继承于JFrame,是计算器的界面 \/ publicclassCalcul...

如何使用Java AWT 创建一个简易计算器
例如,如果连续点击数字 1、加号和减号,但未输入其他数字,这将被认为是无效格式,生成异常。当标签 l1 为空时点击等号按钮,会显示“请输入数字”提示。至此,简易计算器的创建过程已完成。以下是完整的代码及 GIF 演示,供参考。

java怎样写一个简单的计算器
以下是一个简单的例子,这个计算器可以执行加、减、乘、除操作:import java.util.Scanner;public class Calculator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);System.out.println("Enter first number:");double num1 = scanner.nextDouble();System.ou...

求JAVA编写的 简易计算器程序,附上注释
import java.awt.event.*;public class Calculator implements ActionListener { String s="",s1;double d1,d2;JFrame jf = new JFrame("小计算器by Graduate") ;JTextField tf = new JTextField();public void init()\/\/实现计算器界面 { Container c=jf.getContentPane();tf.set...

java课程设计---计算器 要求如下:
import java.util.LinkedList;import java.io.*;public class CalculatorWindow extends JFrame implements ActionListener{ NumberButton numberButton[];OperationButton operationButton[];JButton 小数点操作,正负号操作,退格操作,等号操作,清零操作,sin;JTextField resultShow; \/\/显示计算结果 JTextField s...

求简单java写计算器代码加减乘除
import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Calculator extends JFrame implements ActionListener { private boolean dotExist, operated, equaled; \/\/ 帮助运算的布尔变量 private double storedNumber; \/\/ 目前的结果 private char lastOperator; \/\/ 表示上一运算...

java编一个计算器的代码
代码如下:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;public class Counter { public static void main(String[] args) { CounterFrame frame = new CounterFrame();frame.show();} } class CounterFrame extends JFrame { public CounterFrame() { ...

java编写程序:创建一个 计算器 的 界面,包含 0-9 个 数字 , A-F个字 ...
import java.awt.*;import javax.swing.*;public class MyCalculator extends JFrame{public MyCalculator() {String ss1 = "0123456789ABCDEF";String[] ss2 = {"+","-","*","\/","√ ̄","aⁿ","CE","="};\/\/有些字符不在GBK中,所以文本使用了UTF-8编码。如果要用GBK编码,...

用JAVA编写一个计算器
\/\/ 计算器数字按钮定义面板class Number_Key extends JPanel {\/*** *\/private static final long serialVersionUID = 1L;JButton zero = new JButton("0"); \/\/ 数字键0JButton one = new JButton("1"); \/\/ 数字键1JButton two = new JButton("2"); \/\/ 数字键2JButton three = new JButton...

相似回答
大家正在搜