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; 
}
 
 布局不是很好,其他的还行。功能还是有几个。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值