读书人

求教简单计算器有关问题

发布时间: 2012-01-03 22:16:06 作者: rapoo

求教简单计算器问题
下面是我写的一段简单计算器的代码,可是我不知道“=”的相关代码怎么写,来帮帮忙啊

/******************
**Calculator.java**
******************/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Calculator extends WindowAdapter implements ActionListener {
private JFrame frame;
private JPanel panel1,panel2;
private JTextField tf;
private JButton[] bt;
private static String number,judge,sign;
private static Double num,result;

public void work(){
frame = new JFrame("Normal Calculator");
panel1 = new JPanel();
panel2 = new JPanel();
panel2.setLayout(new GridLayout(4,4));
tf = new JTextField("0.0",15);
bt = new JButton[16];
String[] stringarray = {"0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","="};
for(int i = 0;i<=15;i++) {
bt[i] = new JButton(stringarray[i]);
bt[i].setActionCommand(stringarray[i]);
bt[i].addActionListener(this);
}
number = "";
judge = "";
sign = "";
num = 0.0;
result = 0.0;

panel1.add(tf);
int[] orderarray ={7,8,9,10,4,5,6,11,1,2,3,12,0,14,15,13};
for(int i = 0;i <= 15;i++)
panel2.add(bt[orderarray[i]]);
frame.add(panel1,BorderLayout.NORTH);
frame.add(panel2,BorderLayout.CENTER);

frame.addWindowListener(this);
frame.setSize(300,250);
frame.setVisible(true);
}

public void actionPerformed(ActionEvent e) {
if("1234567890.".contains(e.getActionCommand())) {
number += e.getActionCommand();
tf.setText(number);
}
else {
if("+-*/".contains(e.getActionCommand())) {
workOut();
sign = e.getActionCommand();
}
else workOut();
}
}

public void getNumber() {
if(number != "") {
if(judge == "") {
result = Double.parseDouble(number);
judge = number;
number = "";
}
else {
num = Double.parseDouble(number);
number = "";
}
}
}

public void workOut() {
getNumber();

if(sign.equals("+"))
result += num;
if(sign.equals("-"))
result -= num;
if(sign.equals("*"))
result *= num;
tf.setText(Double.toString(result));
if(sign.equals("/")) {
if(num != 0) {
result /= num;
tf.setText(Double.toString(result));
}
else tf.setText("error");


}
}

public void windowClosing(WindowEvent e) {
System.exit(0);
}

public static void main(String[] args) {
Calculator calculator = new Calculator();
calculator.work();
}
}

[解决办法]
你先定义一个变量sig 当点了+ - * /这些符号的时候,把屏幕的数字存储在一个变量a中,并把符号存在变量sig中,当点=号时候首先判断sign是什么,比如是+ 就把a和屏幕上的数据相加
[解决办法]
我自己也做了个~基本实现了 一些功能~我是通过连表实现的~
建议你用连表~ LinkedList

读书人网 >J2SE开发

热点推荐