📄 calculator .java
字号:
import java.awt.*;
import java.awt.event.*;
class Calculator extends Frame implements ActionListener
{
TextField tResult; //结果文本字段
Panel faceCalculator,panel; //计数器面板
Button button0,button1,button2,button3,button4;
Button button5,button6,button7,button8,button9;
Button buttonPoint,buttonAdd,buttonMul;
Button buttonResult,buttonDiv,buttonSub;
TextArea tFormula; //表达式输出文本域
Menu menu; //清零菜单
MenuItem menuItem;
float first,second,third,n;
char oper1,oper2;
boolean readyoper1,readyoper2,point;
int count; //记录小数点后的位数!
public Calculator(){ //构造函数
point=false;
readyoper1=readyoper2=false;
count=1;
init(); //初始化计数器面板
}
void init(){
MenuBar menuBar=new MenuBar();
panel=new Panel();
tResult=new TextField("0",40);
this.setLayout(new BorderLayout());
this.setTitle("计算机0105-刘雪棉");
panel.add(tResult);
this.add(panel,"North");
faceCalculator=new Panel();
faceCalculator.setLayout(new GridLayout(4,4));
button0=new Button("0");button0.addActionListener(this);
button1=new Button("1");button1.addActionListener(this);
button2=new Button("2");button2.addActionListener(this);
button3=new Button("3");button3.addActionListener(this);
button4=new Button("4");button4.addActionListener(this);
button5=new Button("5");button5.addActionListener(this);
button6=new Button("6");button6.addActionListener(this);
button7=new Button("7");button7.addActionListener(this);
button8=new Button("8");button8.addActionListener(this);
button9=new Button("9");button9.addActionListener(this);
buttonPoint=new Button(".");buttonPoint.addActionListener(this);
buttonAdd=new Button("+");buttonAdd.addActionListener(this);
buttonSub=new Button("-");buttonSub.addActionListener(this);
buttonMul=new Button("*");buttonMul.addActionListener(this);
buttonDiv=new Button("/");buttonDiv.addActionListener(this);
buttonResult=new Button("=");buttonResult.addActionListener(this);
faceCalculator.add(button7);
faceCalculator.add(button8);
faceCalculator.add(button9);
faceCalculator.add(buttonDiv);
faceCalculator.add(button4);
faceCalculator.add(button5);
faceCalculator.add(button6);
faceCalculator.add(buttonMul);
faceCalculator.add(button1);
faceCalculator.add(button2);
faceCalculator.add(button3);
faceCalculator.add(buttonSub);
faceCalculator.add(button0);
faceCalculator.add(buttonPoint);
faceCalculator.add(buttonResult);
faceCalculator.add(buttonAdd);
this.add(faceCalculator,"Center");
tFormula=new TextArea(3,50);
this.add(tFormula,"South");
menu=new Menu("控制");
menuItem=new MenuItem("清零");
menuItem.addActionListener(this);
menu.add(menuItem);
menuBar.add(menu);
this.setMenuBar(menuBar);
this.setSize(300,300);
this.setResizable(false);
this.show();
}
public void addNum(float ch){ //输入多位数
if(!point){
n=n*10+ch;
}
else{
for(int i=0;i<count;i++) ch=ch/10;
n=n+ch;
count++;
}
}
public float sum(float a,float b,char oper){//根据运算符计算两个操作数
switch(oper){
case '+':a=a+b;break;
case '-':a=a-b;break;
case '*':a=a*b;break;
case '/':a=a/b;break;
}
return a;
}
public void actionPerformed(ActionEvent e){//事件处理器
int a=0;
if(e.getSource()==button0) {a=0;addNum(a);}
else if(e.getSource()==button1) {a=1;addNum(a);}
else if(e.getSource()==button2) {a=2;addNum(a);}
else if(e.getSource()==button3) {a=3;addNum(a);}
else if(e.getSource()==button4) {a=4;addNum(a);}
else if(e.getSource()==button5) {a=5;addNum(a);}
else if(e.getSource()==button6) {a=6;addNum(a);}
else if(e.getSource()==button7) {a=7;addNum(a);}
else if(e.getSource()==button8) {a=8;addNum(a);}
else if(e.getSource()==button9) {a=9;addNum(a);}
else if(e.getSource()==buttonPoint) {a='.';point=true;}
else {
point=false;
count=1;
if(readyoper2){
third=n;
second=sum(second,third,oper2);
readyoper2=false;
}
else if(readyoper1){
second=n;
}
else first=n;
n=0;
}
if(e.getSource()==buttonAdd) {
a='+';
if(readyoper1)
first=sum(first,second,oper1);
oper1='+';
readyoper1=true;
}
else if(e.getSource()==buttonSub) {
a='-';
if(readyoper1)
first=sum(first,second,oper1);
oper1='-';
readyoper1=true;
}
else if(e.getSource()==buttonMul)
{
a='*';
if(readyoper1){
if(oper1=='+'||oper1=='-') {readyoper2=true; oper2='*';}
else {first=sum(first,second,oper1);oper1='*';}
}
else{
readyoper1=true;
oper1='*';
}
}else if(e.getSource()==buttonDiv){
a='/';
if(readyoper1){
if(oper1=='+'||oper1=='-') {readyoper2=true; oper2='/';}
else {first=sum(first,second,oper1);oper1='/';}
}
else{
readyoper1=true;
oper1='/';
}
}else if(e.getSource()==buttonResult){
a='=';
first=sum(first,second,oper1);
tResult.setText("="+first);
}
if(e.getSource()==menuItem){
readyoper1=readyoper2=false;
point=false;
count=1;
tResult.setText("0");
tFormula.setText("");
}
else if(a>9)
tFormula.append(""+(char)a);
else
tFormula.append(""+a);
if(a=='=')tFormula.append(""+first);
}
public static void main(String[] args){
Calculator calculator=new Calculator();
calculator.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -