import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
public class MyFrame extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
JPanel contentPane,buttonPane;
JTextField display;
String s[]={"CE","AC","%","+","-",
"6","7","8","9","*",
"2","3","4","5","/",
"1","0","00",".","="};
JButton bt[] = new JButton[20];
double num[]={0, 0}; //定义两个变量用于存储数值
int index=0;
char sign;
MyFrame(){
this.setSize(400,300);
this.setLocationRelativeTo(null);
this.setTitle("计算器");
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane=(JPanel) this.getContentPane();
display=new JTextField();
display.setPreferredSize(new Dimension(this.getWidth(),35));
display.setEditable(false);
display.setText("");
display.setHorizontalAlignment(JTextField.RIGHT);
display.setBorder(new LineBorder(Color.magenta,2));
contentPane.add(display,BorderLayout.NORTH);
buttonPane=new JPanel();
GridLayout layout=new GridLayout(0,5,3,3);
buttonPane.setLayout(layout);
buttonPane.setBorder(new EmptyBorder(10,10,10,10));
buttonPane.setBackground(Color.blue);
contentPane.add(buttonPane,BorderLayout.CENTER);
for(int i=0; i<20; i++){
bt[i] = new JButton(s[i]);
buttonPane.add(bt[i]);
bt[i].setSize(80, 40);
bt[i].addActionListener(this);
}
this.setVisible(true);
}
public static void main(String[] args) {
new MyFrame();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
Object t = e.getSource();
String str = display.getText();
if(t==bt[1] && str.length()>0)
str=str.substring(0, str.length()-1);
if(t==bt[0]){
str=""; index=0; num[0]=0; num[1]=0;
}
if(t==bt[5])
str+='6';
if(t==bt[6])
str+='7';
if(t==bt[7])
str+='8';
if(t==bt[8])
str+='9';
if(t==bt[10])
str+='2';
if(t==bt[11])
str+='3';
if(t==bt[12])
str+='4';
if(t==bt[13])
str+='5';
if(t==bt[15])
str+='1';
if(t==bt[16])
str+='0';
if(t==bt[17]) {
str+='0';
str+='0';
}
if(t==bt[18])
if(str.indexOf('.') == -1)
str+='.'; //有一个小数点时不再添加
if(index==0)
num[0] = Double.parseDouble(str); //将输入的字符串转化成数值并存储在num中
else
num[1] = Double.parseDouble(str);
if(t==bt[2] || t==bt[3] || t==bt[4] || t==bt[9] || t==bt[14]){
if(t==bt[2]) sign='%';
if(t==bt[3]) sign='+';
if(t==bt[4]) sign='-';
if(t==bt[9]) sign='*';
if(t==bt[14]) sign='/';
index=1;
str="";
}
if(t==bt[19]){
if(sign=='/')num[0]/=num[1];
if(sign=='*')num[0]*=num[1];
if(sign=='%')num[0]%=num[1];
if(sign=='-')num[0]-=num[1];
if(sign=='+')num[0]+=num[1];
index=0;
num[1]=0; //清除num[1]中的数值
str=Double.toString(num[index]);
}
display.setText(str);
}
}
求各位大神指导,用Java编了一个计算器但是清除键无法使用,退格键无法完全清除,会剩下一个数字。求帮改代码!!!
最新推荐文章于 2023-05-12 15:17:56 发布