}
clickable = true; }
// 按下′复制′菜单栏
if (temp == copyItem) {
copy = textAnswer.getText(); }
// 按下′粘贴′菜单栏
if (temp == pasteItem) {
textAnswer.setText(copy); }
// 输入中如果有操作非法,比如按下两次′+′,捕获异常 catch (Exception e) {
textAnswer.setText(\操作非法\); clickable = false; } }
// 主函数
public static void main(String args[]) { new MyCalculator(); }
}
四、运行结果:
五、重点代码分析
这一部分涉及到程序功能的算法问题
public void actionPerformed(ActionEvent event) { Object temp = event.getSource(); try {
// 如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后
for (int i = 0; i <= 9; i++)
if (temp == button[i] && clickable == true) { if(resultIndicate) {
textAnswer.setText(\); clickable = true;
textAnswer.setText(textAnswer.getText() + Integer.toString(i)); }
else {
textAnswer.setText(textAnswer.getText() + Integer.toString(i)); } }
// 按下′.′按钮时,判断当前文本框内字符串中含不含′.′,如果已含,则不允许再插入′.′
if (temp == buttonDot && clickable == true) { boolean isDot = false;
if (textAnswer.getText().length() == 0) { //isDot = true; isDot = false; dotFlag = true; }
for (int i = 0; i < textAnswer.getText().length(); i++) if ('.' == textAnswer.getText().charAt(i)) { isDot = true; break; }
if (isDot == false) { if (dotFlag)
textAnswer.setText('0' + \); else
textAnswer.setText(textAnswer.getText() + \); } }
if ((temp == buttonAdd || temp == buttonSub || temp == buttonMul ||
temp == buttonDiv) && clickable == true) {
// ′+′操作
if (temp == buttonAdd) { switch (prekey) { case 0:
answerd +=
Double.parseDouble(textAnswer.getText()); break; case 1:
answerd -=
Double.parseDouble(textAnswer.getText()); break; case 2:
answerd *=
Double.parseDouble(textAnswer.getText()); break; case 3: if (Double.parseDouble(textAnswer.getText()) == 0) {
textAnswer.setText(\除数不能为零\); clickable = false; } else
answerd /=
Double.parseDouble(textAnswer.getText()); break; default:
answerd =
Double.parseDouble(textAnswer.getText()); }
textAnswer.setText(\); prekey = key = 0; }
// ′-′操作
if (temp == buttonSub) { switch (prekey) { case 0:
answerd +=
Double.parseDouble(textAnswer.getText()); break; case 1:
answerd -=
Double.parseDouble(textAnswer.getText()); break; case 2:
answerd *=
Double.parseDouble(textAnswer.getText()); break; case 3: if (Double.parseDouble(textAnswer.getText()) == 0) {
textAnswer.setText(\除数不能为零\); clickable = false; } else
answerd /=
Double.parseDouble(textAnswer.getText()); break; default:
answerd =
Double.parseDouble(textAnswer.getText()); }
textAnswer.setText(\); prekey = key = 1; }
// ′*′操作
if (temp == buttonMul) { switch (prekey) { case 0:
answerd +=
Double.parseDouble(textAnswer.getText()); break; case 1:
answerd -=
Double.parseDouble(textAnswer.getText()); break; case 2:
answerd *=
Double.parseDouble(textAnswer.getText()); break; case 3: if (Double.parseDouble(textAnswer.getText()) == 0) {
textAnswer.setText(\除数不能为零\); clickable = false; }
else
answerd /=
Double.parseDouble(textAnswer.getText()); break; default:
answerd =
Double.parseDouble(textAnswer.getText()); }
textAnswer.setText(\); prekey = key = 2; }
// ′/′操作
if (temp == buttonDiv) { switch (prekey) { case 0:
answerd +=
Double.parseDouble(textAnswer.getText()); break; case 1:
answerd -=
Double.parseDouble(textAnswer.getText()); break; case 2:
answerd *=
Double.parseDouble(textAnswer.getText()); break; case 3: if (Double.parseDouble(textAnswer.getText()) == 0) {
textAnswer.setText(\除数不能为零\); clickable = false; } else
answerd /=
Double.parseDouble(textAnswer.getText()); break; default:
answerd =
Double.parseDouble(textAnswer.getText()); }
textAnswer.setText(\); prekey = key = 3; } }