//带界面的计算器应用程序
import java.awt.*;
import java.awt.event.*;
public class Counters extends Frame{
Panel panel;
TextField tf;
Button b[],add,sub,mul,div,cle,
equ,dot,eight,sqr,tsex;
Boolean isDot,operated,equaled;
double storedNumber;
char lastOperator;
public Counters(){
isDot=false;
operated=false;
equaled=false;
storedNumber=0;
lastOperator='?';
panel=new Panel();
tf=new TextField();
b=new Button[10];
for(int i=0;i<10;i++){b[i]=new Button(""+i);}
add=new Button("+");
sub=new Button("-");
mul=new Button("*");
div=new Button("/");
cle=new Button("Cle");
equ=new Button("=");
dot=new Button(".");
eight=new Button("N(8)");
sqr=new Button("√");
tsex=new Button("N(16)");
this.add(tf,BorderLayout.NORTH);
this.add(panel,BorderLayout.CENTER);
panel.setLayout(new GridLayout(5,4,10,10));
panel.add(b[1]);
panel.add(b[2]);
panel.add(b[3]);
panel.add(add);
panel.add(b[4]);
panel.add(b[5]);
panel.add(b[6]);
panel.add(sub);
panel.add(b[7]);
panel.add(b[8]);
panel.add(b[9]);
panel.add(mul);
panel.add(b[0]);
panel.add(dot);
panel.add(sqr);
panel.add(div);
panel.add(eight);
panel.add(tsex);
panel.add(cle);
panel.add(equ);
this.setTitle("计算器");
this.setSize(250,350);
this.setVisible(true);
for(int i=0;i<10;i++){b[i].addActionListener(new Monitor());}
add.addActionListener(new Monitor());
sub.addActionListener(new Monitor());
mul.addActionListener(new Monitor());
div.addActionListener(new Monitor());
dot.addActionListener(new Monitor());
sqr.addActionListener(new Monitor());
equ.addActionListener(new Monitor());
cle.addActionListener(new Monitor());
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
eight.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int temp=Integer.parseInt(tf.getText()) ;
tf.setText(""+Integer.toOctalString(temp));
}
});
tsex.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int temp=Integer.parseInt(tf.getText());
tf.setText(""+Integer.toHexString(temp));
}
});
}
class Monitor implements ActionListener{
public void actionPerformed(ActionEvent e){
Button btn=(Button)e.getSource();
if(btn==cle){
tf.setText("0");
isDot=false;
storedNumber=0;
lastOperator='?';
}
else if(btn==equ){
operate('=');
equaled=true;
}
else if(btn==add){
operate('+');
equaled=false;
}
else if(btn==sub){
operate('-');
equaled=false;
}
else if(btn==mul){
operate('*');
equaled=false;
}
else if(btn==div){
operate('/');
equaled=false;
}
else if(btn==sqr){
operate('s');
operate('=');
equaled=true;
}
else{
if(equaled) storedNumber=0;
for(int i=0;i<10;i++)
if(btn==b[i]){
if(tf.getText().equals("0"))
tf.setText(""+i);
else if(!operated)
tf.setText(tf.getText()+i);
else{
tf.setText(""+i);
operated=false;
}
}
if(btn==dot&&!isDot){
tf.setText(tf.getText()+".");
isDot=true;
}
}
}
}
public void operate(char operator){
double currentNumber = Double.valueOf(tf.getText()).doubleValue();
if (lastOperator == '?')
storedNumber = currentNumber;
else if (lastOperator == '+')
storedNumber += currentNumber;
else if (lastOperator == '-')
storedNumber -= currentNumber;
else if (lastOperator == '*')
storedNumber *= currentNumber;
else if (lastOperator == '/')
storedNumber /= currentNumber;
else if (lastOperator == 's')
storedNumber = Math.sqrt(currentNumber);
else if (lastOperator == '=' && equaled)
storedNumber = currentNumber;
tf.setText("" + storedNumber);
operated = true;
lastOperator = operator;
}
public static void main(String args[]){
new Counters();
}
}
jisuanqi.zip_java 计算器 异常处理
版权申诉
146 浏览量
2022-09-19
19:21:53
上传
评论 3
收藏 2KB ZIP 举报
Kinonoyomeo
- 粉丝: 75
- 资源: 1万+
最新资源
- 基于UC3842+LTS26Q1565A设计PC机充电器 硬件(原理图+PCB)工程文件.zip
- Hive SQL经典面试题,大数据SQL经典面试题
- Qt实现喷码器代码,实现二维码、条形码、图形的旋转、移动等
- 基于LM324芯片比较器传感器模块AD09设计硬件(原理图+PCB)工程文件.zip
- HTTP请求 - 记一笔-添加记账.jmx
- 2205040245凡永超硬间隔svm.ipynb
- Qt喷码器demo,演示软件,不是代码
- 目标跟踪-基于目标中心点同时进行目标检测+目标跟踪算法实现-项目源码-优质项目实战.zip
- Python《文本特征分析-全唐诗数据挖掘及分析 》+源代码
- Netron-Setup-4.5.0
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0