📄 jisuanqi.java
字号:
import java.awt.*;
import java.awt.event.*;
public class JiSuanQi extends Frame{
public double result = 0;
public int n = 0;//用于保证输入数中小数点的个数
public String fuhao = null;//用于存储上一个运算符
public Boolean sorf = true;//用于判断上个按钮是数字还是运算符 数字为false 运算符为true;
public Panel p1 = new Panel();
public Panel p2 = new Panel();
public TextField t = new TextField(30);
public Button bu = new Button("ce");//清零
public String[] name = {"1","2","3","+","4","5","6","-","7","8","9","*","0",".","=","/"};
public Button[] b = new Button[name.length];
//构造方法
public JiSuanQi(){
super("计算器");
setLayout(new BorderLayout());
//添加组件
add(p1,BorderLayout.NORTH);
add(p2,BorderLayout.SOUTH);
p1.add(t);
p1.add(bu);
p2.setLayout(new GridLayout(4,4));
t.setText("0");
for(int i = 0;i<name.length;i++){
b[i] = new Button(name[i]);
b[i].setSize(5,5);
p2.add(b[i]);
}
//关闭
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//监听
for(int i = 0;i<b.length;i++){
b[i].addActionListener(new ButtonListener());
}
bu.addActionListener(new ButtonListener());
pack();
setVisible(true);
}
public class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e){
String s = e.getActionCommand();
zhiXing(s);
}
}
//执行方法
/**将按钮分为数字、小数点、运算符和清零键。
*当遇到数字时,如文本框内无内容则t.setTest();
* 如文本框中有内容则t.setTest(t.getTest()+s);
*当遇到小数点 先判断小数点的个数,若已经出现了小数点,则无操作
* 若还没有出现小数点,如文本框内无内容t.setTest();
* 如文本框中有内容则t.setTest(t.getTest()+s);
*当遇到运算符时 同上判断各种情况 看是否运算。
*/
public void zhiXing(String st1){
if(st1.charAt(0)>='0'&&st1.charAt(0)<='9'){
if(sorf) t.setText(st1);
else t.setText(t.getText()+st1);
sorf = false;
} else if(st1.charAt(0)=='.'){
if(sorf) t.setText(st1);
else{
if(n==0) t.setText(t.getText()+st1);}
sorf = false;
n++;
}else if(st1.charAt(0)=='c'){
result = 0;
n = 0;
fuhao = null;
sorf = true;
t.setText("0");
} else {
if(fuhao == null) {result =Double.parseDouble(t.getText());fuhao = st1;}
else if(sorf ==true){}
else yunSuan();
fuhao = st1;
sorf = true;
n=0;
}
}
//运算
public void yunSuan(){
if(fuhao == "+"){
t.setText(result + Double.parseDouble(t.getText())+"");}
if(fuhao == "-"){
t.setText(result - Double.parseDouble(t.getText())+"");}
if(fuhao == "*"){
t.setText(result * Double.parseDouble(t.getText())+"");}
if(fuhao == "/"){
t.setText(result / Double.parseDouble(t.getText())+"");}
if(fuhao == "="){}
result = Double.parseDouble(t.getText());
}
//主方法
public static void main(String[] args){
JiSuanQi j = new JiSuanQi();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -