java 计算器代码

package  my;
import  java.awt. *
import  java.awt.event. *
import  javax.swing. *

public   class  Calculator 

public static void main(String[] args) 

CalculatorFrame frame
=new CalculatorFrame(); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setVisible(
true); 
}
 
}
 

class  CalculatorFrame  extends  JFrame 

public CalculatorFrame() 

setTitle(
"Calculator"); 
CalculatorPanel panel
=new CalculatorPanel(); 
add(panel); 
pack(); 
}
 
}
 

class  CalculatorPanel  extends  Panel 

public CalculatorPanel() 

setLayout(
new BorderLayout()); 

result
=0
lastCommand
="="
start
=true
flag
=true

display
=new JButton("0"); 
display.setEnabled(
false); 
add(display,BorderLayout.NORTH); 

ActionListener insert
=new InsertAction(); 
ActionListener command
=new CommandAction(); 

panel
=new JPanel(); 
panel.setLayout(
new GridLayout(4,5)); 

addButton(
"7",insert); 
addButton(
"8",insert); 
addButton(
"9",insert); 
addButton(
"/",command); 
addButton(
"CE",command); 

addButton(
"4",insert); 
addButton(
"5",insert); 
addButton(
"6",insert); 
addButton(
"*",command); 
addButton(
"Backspace",command); 

addButton(
"1",insert); 
addButton(
"2",insert); 
addButton(
"3",insert); 
addButton(
"-",command); 
addButton(
"sqrt",command); 

addButton(
"0",insert); 
addButton(
".",insert); 
addButton(
"=",command); 
addButton(
"+",command); 
addButton(
"1/x",command); 

add(panel,BorderLayout.CENTER); 
}
 
private void addButton(String label,ActionListener listener) 

JButton button
=new JButton(label); 
button.addActionListener(listener); 
panel.add(button); 
}
 
private class InsertAction implements ActionListener 

public void actionPerformed(ActionEvent event) 

String input
=event.getActionCommand(); 
if(start&&flag) 

display.setText(
""); 
start
=false
}
 
if(flag) 
display.setText(display.getText()
+input); 
}
 
}
 
private class CommandAction implements ActionListener 

public void actionPerformed(ActionEvent event) 

String command
=event.getActionCommand(); 

if(command.equals("CE")) 

display.setText(
"0"); 
start
=true
flag
=true
command
="="
}
 
else 
if(start&&flag) 

if(command.equals("-")) 

display.setText(command); 
start
=false
}
 
else 
if((command.equals("1/x")||command.equals("sqrt"))&&flag) 
calculate(Double.parseDouble(display.getText()),command); 
else 
if(flag) 
lastCommand
=command; 
}
 
else 

if(command.equals("Backspace")&&flag) 

String s
=display.getText(); 
char[] s1=s.toCharArray(); 
if(s.length()>=2

String s2
=new String(s1,0,s.length()-1); 
display.setText(s2); 
}
 
else 

display.setText(
"0"); 
start
=true
}
 

}
 
else if(flag) 

calculate(Double.parseDouble(display.getText()),command); 

lastCommand
=command; 
start
=true
}
 
}
 
}
 
}
 

public void calculate(double x,String command) 

if(lastCommand.equals("+")) result+=x; 
else if(lastCommand.equals("-")) result-=x; 
else if(lastCommand.equals("/")) 

if(x!=0
result
/=x; 
else 

display.setText(
"除数不能为0"); 
start
=false
flag
=false
return
}
 
}
 
else if(lastCommand.equals("*")) result*=x; 
else if(command.equals("1/x")) 

if(x!=0
result
=1/x; 
else 

display.setText(
"除数不能为0"); 
start
=false
flag
=false
return
}
 

}
 
else if(command.equals("sqrt")) 

if(x>=0
result
=Math.sqrt(x); 
else 

display.setText(
"函数输入无效"); 
start
=false
flag
=false
return
}
 
}
 
else if(lastCommand.equals("=")) result=x; 

display.setText(
""+result); 
}
 
private JButton display; 
private JPanel panel; 
private double result; 
private String lastCommand; 
private boolean start; 
private boolean flag; 
}
 
 布局不是很好,其他的还行。功能还是有几个。

猜你喜欢

转载自blog.csdn.net/fegor/article/details/1641796
今日推荐