📄 mycacl.java
字号:
/*
Author:1921107
*/
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
class mylst extends WindowAdapter{
public void windowClosing(WindowEvent ev)
{
System.exit(1);
}
}
public class cacl implements ActionListener{
Button key0,key1,key2,key3,key4,key5,key6,key7,key8,key9,key10,key11,key12,key13,key14,key15,key16,key17;
TextField txtAnswer;
Panel p,q;
Frame f;
char operate=' ';
String firstNum=""; //目标操作数
String secdNum=""; //源操作数
public static void main(String args[]){
cacl calGUI=new cacl();
calGUI.go();
}
public void go(){
f=new Frame("计算器");
p=new Panel();
q=new Panel();
txtAnswer=new TextField("0",20);
mylst mls=new mylst();
f.addWindowListener(mls);
key0=new Button("7");
key1=new Button("8");
key2=new Button("9");
key3=new Button("/");
key4=new Button("4");
key5=new Button("5");
key6=new Button("6");
key7=new Button("*");
key8=new Button("1");
key9=new Button("2");
key10=new Button("3");
key11=new Button("-");
key12=new Button("0");
key13=new Button(".");
key14=new Button("+");
key15=new Button("%");
key16=new Button("=");
key17=new Button("Clear");
p.setLayout(new GridLayout(4,4));
p.add(key0);
p.add(key1);
p.add(key2);
p.add(key3);
p.add(key4);
p.add(key5);
p.add(key6);
p.add(key7);
p.add(key8);
p.add(key9);
p.add(key10);
p.add(key11);
p.add(key12);
p.add(key13);
p.add(key14);
p.add(key15);
q.setLayout(new GridLayout(1,2));
q.add(key16);
q.add(key17);
f.setSize(200,200);
f.add(txtAnswer,"North");
f.add(p);
f.add(q,"South");
f.setVisible(true);
key0.addActionListener(this);
key1.addActionListener(this);
key2.addActionListener(this);
key3.addActionListener(this);
key4.addActionListener(this);
key5.addActionListener(this);
key6.addActionListener(this);
key7.addActionListener(this);
key8.addActionListener(this);
key9.addActionListener(this);
key10.addActionListener(this);
key11.addActionListener(this);
key12.addActionListener(this);
key13.addActionListener(this);
key14.addActionListener(this);
key15.addActionListener(this);
key16.addActionListener(this);
key17.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
String c="";
c=e.getActionCommand();
if(c.equals("Clear"))
{
operate=' ';
firstNum="";
secdNum="";
txtAnswer.setText("");
}
else
{
if (operate==' '){
if ((c.charAt(0)=='+')|| (c.charAt(0)=='-') ||(c.charAt(0)=='*') || (c.charAt(0)=='/')){
operate=c.charAt(0);
System.out.println("operate="+operate);
}
else if(c.charAt(0)=='=') {
}
else if(c.charAt(0)=='.'){
if(firstNum.indexOf(".")==-1&&firstNum!="")
firstNum+=c;
txtAnswer.setText(firstNum);
}
else{
firstNum+=c;
txtAnswer.setText(firstNum);
System.out.println("firstNum="+firstNum);
}
}
else{
if((c.charAt(0)!='+')&&(c.charAt(0)!='-')&&(c.charAt(0)!='*')&&(c.charAt(0)!='/')&&(c.charAt(0)!='=')&&c.charAt(0)!='.'){
secdNum+=c;
txtAnswer.setText(secdNum);
System.out.println("secdNum="+secdNum);
}
else if (c.charAt(0)=='='){
if(secdNum!="")
{
System.out.println("result:");
firstNum=String.valueOf(cal(operate));
txtAnswer.setText(firstNum);
secdNum="";
}
}
else if(c.charAt(0)=='.'){
if(secdNum.indexOf(".")==-1&&secdNum!="")
secdNum+=c;
txtAnswer.setText(secdNum);
}
else{
if(secdNum!="")
{
firstNum=String.valueOf(cal(operate));
txtAnswer.setText(firstNum);
}
operate=c.charAt(0);
System.out.println("operate="+operate);
secdNum="";
}
}
}
}
public float cal(char op){
float answer=0;
System.out.println("first="+firstNum+" op="+op +" second="+secdNum);
if ((firstNum.indexOf(".")==-1)&&(secdNum.indexOf(".")==-1)){
switch(op){
case '+' : answer=Integer.parseInt(firstNum) + Integer.parseInt(secdNum);break;
case '-' : answer=Integer.parseInt(firstNum) - Integer.parseInt(secdNum);break;
case '*' : answer=Integer.parseInt(firstNum) * Integer.parseInt(secdNum);break;
case '/' : if(Integer.parseInt(secdNum)!=0) answer=Integer.parseInt(firstNum) / Integer.parseInt(secdNum);break;
case '%' : answer=Integer.parseInt(firstNum) % Integer.parseInt(secdNum);break;
}
}
else{
switch(op){
case '+' : answer=Float.parseFloat(firstNum) + Float.parseFloat(secdNum);break;
case '-' : answer=Float.parseFloat(firstNum) - Float.parseFloat(secdNum);break;
case '*' : answer=Float.parseFloat(firstNum) * Float.parseFloat(secdNum);break;
case '/' : if(Float.parseFloat(secdNum)!=0) answer=Float.parseFloat(firstNum) / Float.parseFloat(secdNum);break;
}
}
return(answer);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -