📄 calculator.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Calculator extends WindowAdapter implements ActionListener
{
private String str1="",str="+";
private static double d=0,d1=0,d2=0,d3=0;
private boolean res=true,point=true;
Frame f=new Frame("计算器");
JTextField tf=new JTextField(20);
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JButton b1=new JButton("Backspace");
JButton b2=new JButton(" CE ");
JButton b3=new JButton(" C ");
String a[]={"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-"," 1/x ","0","+/-",".","+","="};
JButton b[]=new JButton[a.length];
public static void main(String args[])
{
Calculator one=new Calculator();
one.go();
}
public void go()
{
p1.add(b1);
p1.add(b2);
p1.add(b3);
p2.setLayout(new GridLayout(4,5,3,3));
for(int i=0;i<a.length;i++)
{
b[i]=new JButton(a[i]);
p2.add(b[i]);
b[i].addActionListener(this);
}
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
f.add(tf,"North");
f.add(p1,"Center");
f.add(p2,"South");
tf.setEditable(false);
tf.setBackground(Color.white);
tf.setHorizontalAlignment(JTextField.RIGHT);
f.addWindowListener(this);
f.setSize(303,210);
f.setBackground(Color.LIGHT_GRAY);
f.setResizable(false);
f.setVisible(true);
}
public void windowClosing(WindowEvent e)
{System.exit(0);}
public void actionPerformed(ActionEvent e)
{
String s=e.getActionCommand();
if(s.equals(" C "))
{
tf.setText(str1="");reset();d1=0;
point=true;
}
switch(s.charAt(0))
{
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
str1+=s;
d=Double.parseDouble(str1);
print(d);
break;
case '.':
if(point)
{
if(str1=="") {str1="0."+str1;d=Double.parseDouble(str1);tf.setText(str1);}
else
{str1=str1+".";d=Double.parseDouble(str1);tf.setText(str1);}
point=false;
}
else break;
break;
case '+':
d1+=d;
str="+";
reset();
point=true;
break;
case '-':
if(d1==0)d1=d;else
d1-=d;
str="-";
reset();
point=true;
break;
case '*':
if(d1==0)d1=d;else
d1*=d;
str="*";
reset();
point=true;
break;
case '/':
if(d==0) break;
if(d1==0)d1=d;else
d1/=d;
str="/";
reset();
point=true;
break;
case '=':
if(str.equals("+")) {d1+=d;reset();}
if(str.equals("-")) {d1-=d;reset();}
if(str.equals("*")) {d1*=d;d=1;str1="";}
if(str.equals("/")) {if(d==0) break;else {d1/=d;d=1;str1="";}}
print(d1);
break;
case 'B':
if(str1.length()==1) str1="0";else
str1=str1.substring(0,str1.length()-1);
d=Double.parseDouble(str1);
print(d);
break;
}
}
public void print(double a1)
{
int a2=(int)a1;
if(a1==a2) tf.setText(Integer.toString(a2));
else tf.setText(Double.toString(a1));
}
public void reset()
{d=0;str1="";}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -