先上代码了。import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class Calculator extends JFrame implements ActionListener {
private JTextField jtf = new JTextField(10);
private boolean newNumber = true;
private double result = 0;
private String op = "";
public Calculator() {
JPanel p = new JPanel();
p.setLayout(new GridLayout(4, 5,2,2));
JButton jbt1 = new JButton("7");
jbt1.setForeground(Color.blue);
JButton jbt2 = new JButton("8");
jbt2.setForeground(Color.blue);
JButton jbt3 = new JButton("9");
jbt3.setForeground(Color.blue);
JButton jbt4 = new JButton("/");
jbt4.setForeground(Color.red);
JButton jbt5 = new JButton("sqrt");
jbt5.setForeground(Color.blue);
JButton jbt6 = new JButton("4");
jbt6.setForeground(Color.blue);
JButton jbt7 = new JButton("5");
jbt7.setForeground(Color.blue);
JButton jbt8 = new JButton("6");
jbt8.setForeground(Color.blue);
JButton jbt9 = new JButton("*");
jbt9.setForeground(Color.red);
JButton jbt10 = new JButton("%");
jbt10.setForeground(Color.blue);
JButton jbt11 = new JButton("1");
jbt11.setForeground(Color.blue);
JButton jbt12 = new JButton("2");
jbt12.setForeground(Color.blue);
JButton jbt13 = new JButton("3");
jbt13.setForeground(Color.blue);
JButton jbt14 = new JButton("-");
jbt14.setForeground(Color.red);
JButton jbt15 = new JButton("1/x");
jbt15.setForeground(Color.blue);
JButton jbt16 = new JButton("0");
jbt16.setForeground(Color.blue);
JButton jbt17 = new JButton("+/-");
jbt17.setForeground(Color.blue);
JButton jbt20=new JButton("清空");
jbt20.setForeground(Color.blue);
JButton jbt18 = new JButton("+");
jbt18.setForeground(Color.red);
JButton jbt19 = new JButton("=");
jbt19.setForeground(Color.red);
JButton[] jbt = { jbt1, jbt2, jbt3, jbt4, jbt5, jbt6, jbt7, jbt8, jbt9,jbt10,jbt11,jbt12, jbt13, jbt14,jbt15,jbt16,jbt17,jbt20,jbt18,jbt19};
Font font = new Font("华文新魏", Font.BOLD, 20);
for (int i = 0; i < jbt.length; i++) {
jbt[i].setFont(font);
p.add(jbt[i]);
jbt[i].addActionListener(this);
}

setLayout(new BorderLayout());
add(p, BorderLayout.CENTER);
add(jtf, BorderLayout.NORTH);

}
int key=0;
public void actionPerformed(ActionEvent e) {
String actionCommand = e.getActionCommand();
if ('0' <= actionCommand.charAt(0) && actionCommand.charAt(0) <= '9') {
if (newNumber) {
result=Double.parseDouble(jtf.getText()+actionCommand);
jtf.setText(jtf.getText()+actionCommand);

} else {
if(key==0)
jtf.setText(actionCommand);

if(key==1)
jtf.setText(jtf.getText()+actionCommand);
key=1;
}
} else {
newNumber = false;
if(actionCommand=="=")
execute();
op = actionCommand;
if(actionCommand=="sqrt"||actionCommand=="1/x"||actionCommand.equals("+/-")||actionCommand=="清空"){
execute();
}
  
}

} public void execute() {
double number = new Double(jtf.getText()).doubleValue();
if(op!="+/-"){
switch (op.charAt(0)) {
case '+':
result += number;
break;
case '-':
result -= number;
break;
case '*':
result *= number;
break;
case '/':
result /= number;
break;
case '%':
result %= number;
break;

}
}
if (op == "sqrt")
result = Math.sqrt(result);
if (op.equals("1/x"))
result = 1/result;
if (op == "+/-")
result=result/(-1);
if(op=="清空"){
newNumber = true;
jtf.setText("");
}
else
jtf.setText(new Double(result).toString());
key=0;

} public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
Calculator calculator = new Calculator();
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());   
SwingUtilities.updateComponentTreeUI(calculator);
calculator.setTitle("计算器");
calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Display the frame
calculator.setSize(390, 350);
calculator.setVisible(true);
}
}
程序可以运行啊,但是有个功能 就是1/X这个功能不能实现。会报错。我把代码中所有的1/X改成?/X或者别的名称,就可以实现1/X的效果了谁知道这是为什么好奇怪啊!!!!!就是改下名称就可以实现了,不解!!