把上一次写的计算器代码缩减到了110行,大概缩短了1/3,不过代码还是可以缩减 下面开始学习网络编程了,有时间再继续写个科学计算器出来 import java.awt.*; import java.awt.event.*; import javax.swing.*; class CalculatorFrame extends JFrame { JTextField jtf = new JTextField(); JPanel panel = new JPanel(); int select = 0; String command = ""; double temp = 0.0; double number; public CalculatorFrame(){ this.setTitle("计算器2.0版"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Frame窗口可以关闭(默认也为关闭) Container con = getContentPane(); con.add(jtf,BorderLayout.NORTH); con.add(panel,BorderLayout.CENTER); panel.setLayout(new GridLayout(4,4)); con.add(panel); jtf.setHorizontalAlignment(JTextField.RIGHT);//文本靠右排放 ActionListener nums = new CaculatorAction1(); ActionListener opin = new CaculatorAction2(); addButton("1",nums); addButton("2",nums); addButton("3",nums); addButton("+",opin); addButton("4",nums); addButton("5",nums); addButton("6",nums); addButton("-",opin); addButton("7",nums); addButton("8",nums); addButton("9",nums); addButton("*",opin); addButton("0",nums); addButton(".",opin); addButton("=",opin); addButton("/",opin); } private void addButton(String str, ActionListener list){ JButton button = new JButton(str); button.addActionListener(list); panel.add(button); } class CaculatorAction1 implements ActionListener { public void actionPerformed(ActionEvent e) { String input = e.getActionCommand(); jtf.setText(jtf.getText()+input); } } class CaculatorAction2 implements ActionListener { public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if(command.equals("+")){ temp = Double.parseDouble(jtf.getText()); jtf.setText(""); select = 1; } if(command.equals("-")){ temp = Double.parseDouble(jtf.getText()); jtf.setText(""); select = 2; } if(command.equals("*")){ temp = Double.parseDouble(jtf.getText()); jtf.setText(""); select = 3; } if(command.equals("/")){ temp = Double.parseDouble(jtf.getText()); jtf.setText(""); select = 4; } if(command.equals("=")){ if(select == 1){ number = Double.parseDouble(jtf.getText()); jtf.setText((number = temp + number)+""); } else if(select == 2){ number = Double.parseDouble(jtf.getText()); jtf.setText((number = temp - number)+""); } else if(select == 3){ number = Double.parseDouble(jtf.getText()); jtf.setText((number = temp * number)+""); } else if(select == 4){ number = Double.parseDouble(jtf.getText()); if(number == 0){ JOptionPane.showMessageDialog(panel, "除数不能为0"); } else{ jtf.setText((number = temp/number)+""); } } } } } } public class Calculatortest { public static void main(String[] args) { CalculatorFrame mainFrame = new CalculatorFrame(); mainFrame.setSize(400,400); mainFrame.setTitle("calculator"); mainFrame.setVisible(true); } }