在NetBeans中创建一个项目,不要主类,新建一个JFrame,添加一个jTextFiled,18个jButton,如下图:
添加下面这些代码:
double temp;
double result;//存储结果
String s = "";//存储显示在屏幕上的值
String s1 = "";//存储参与计算的值
byte flag = 0;/*flag=0表示没有选择运算符,1表示加号,2表示减号,
3表示乘号,4表示除号,5表示取余*/
private void jButton1MouseReleased(java.awt.event.MouseEvent evt) {
flag = 1;
s1 = jTextField1.getText();
try {
temp = Double.parseDouble(s1);
result = temp;
} catch (NumberFormatException e) {
jTextField1.setText("还没有输入数字");
}
jTextField1.setText("+");
s = "";
}
private void jButton2MouseReleased(java.awt.event.MouseEvent evt) {
flag = 2;
s1 = jTextField1.getText();
try {
temp = Double.parseDouble(s1);
result = temp;
} catch (NumberFormatException e) {
jTextField1.setText("还没有输入数字");
}
jTextField1.setText("-");
s = "";
}
private void jButton3MouseReleased(java.awt.event.MouseEvent evt) {
flag = 3;
s1 = jTextField1.getText();
try {
temp = Double.parseDouble(s1);
result = temp;
} catch (NumberFormatException e) {
jTextField1.setText("还没有输入数字");
}
jTextField1.setText("*");
s = "";
}
private void jButton4MouseReleased(java.awt.event.MouseEvent evt) {
flag = 4;
s1 = jTextField1.getText();
try {
temp = Double.parseDouble(s1);
result = temp;
} catch (NumberFormatException e) {
jTextField1.setText("还没有输入数字");
}
jTextField1.setText("/");
s = "";
}
private void jButton5MouseReleased(java.awt.event.MouseEvent evt) {
flag = 5;
s1 = jTextField1.getText();
try {
temp = Double.parseDouble(s1);
result = temp;
} catch (NumberFormatException e) {
jTextField1.setText("还没有输入数字");
}
jTextField1.setText("%");
s = "";
}
private void jButton7MouseReleased(java.awt.event.MouseEvent evt) {
s = s + 1;
jTextField1.setText(s);
}
private void jButton8MouseReleased(java.awt.event.MouseEvent evt) {
s = s + 2;
jTextField1.setText(s);
}
private void jButton9MouseReleased(java.awt.event.MouseEvent evt) {
s = s + 3;
jTextField1.setText(s);
}
private void jButton11MouseReleased(java.awt.event.MouseEvent evt) {
s = s + 4;
jTextField1.setText(s);
}
private void jButton10MouseReleased(java.awt.event.MouseEvent evt) {
s = s + 5;
jTextField1.setText(s);
}
private void jButton12MouseReleased(java.awt.event.MouseEvent evt) {
s = s + 6;
jTextField1.setText(s);
}
private void jButton13MouseReleased(java.awt.event.MouseEvent evt) {
s = s + 7;
jTextField1.setText(s);
}
private void jButton15MouseReleased(java.awt.event.MouseEvent evt) {
s = s + 8;
jTextField1.setText(s);
}
private void jButton14MouseReleased(java.awt.event.MouseEvent evt) {
s = s + 9;
jTextField1.setText(s);
}
private void jButton17MouseReleased(java.awt.event.MouseEvent evt) {
s = s + '.';
jTextField1.setText(s);
}
private void jButton16MouseReleased(java.awt.event.MouseEvent evt) {
s = s + 0;
jTextField1.setText(s);
}
private void jButton18MouseReleased(java.awt.event.MouseEvent evt) {
s1 = jTextField1.getText().trim();
temp = Double.parseDouble(s1);
switch (flag) {
case 1:
result = result + temp;
break;
case 2:
result = result - temp;
break;
case 3:
result = result * temp;
break;
case 4:
result = result / temp;
break;
case 5:
result = result % temp;
break;
default:
jTextField1.setText("出现错误!");
}
jTextField1.setText(String.valueOf(result));
s = "";
}
private void jButton6MouseReleased(java.awt.event.MouseEvent evt) {
result = 0;
s = "";
s1 = "";
flag = 0;
jTextField1.setText("");
}
实际上大部分代码是重复的。
基本思路就是每按一下数字键,就为一个字符串类型对象增加一个相应的字符,按下运算符的按键时,将这个字符串转化为数字,double类型的。同时根据运算符的不同将变量flag设置为不同的值。按下等号时,再将新生成的字符串转化为数字,根据flag的值将两个值进行相应的运算,并显示出来。