效果
代码
package Test;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class calculator extends JFrame {
private JButton jbtNumber0=new JButton("0");
private JButton jbtNumber1=new JButton("1");
private JButton jbtNumber2=new JButton("2");
private JButton jbtNumber3=new JButton("3");
private JButton jbtNumber4=new JButton("4");
private JButton jbtNumber5=new JButton("5");
private JButton jbtNumber6=new JButton("6");
private JButton jbtNumber7=new JButton("7");
private JButton jbtNumber8=new JButton("8");
private JButton jbtNumber9=new JButton("9");
private JButton jbtAdd=new JButton("+");
private JButton jbtEqual=new JButton("=");
private JButton jbtMinus=new JButton("-");
private JButton jbtMultiply=new JButton("x");
private JButton jbtDiv=new JButton("÷");
private JButton jbtReset=new JButton("复位");
private JButton jbtDel=new JButton("DEL");
private JLabel label1=new JLabel("请输入数据");
public static final int MaxNumber=7;
private double add;
private double added;
private double sum=0;
private static double errorSum;
private double total;
private boolean flagAdd;
private boolean flagMinus;
private boolean flagMultiply;
private boolean flagDiv;
private boolean flagEqual;
private JButton[] jbt={jbtNumber0,jbtNumber1,jbtNumber2,jbtNumber3,jbtNumber4,jbtNumber5,jbtNumber6,
jbtNumber7,jbtNumber8,jbtNumber9};
private JButton[] jbt2={jbtAdd,jbtMinus,jbtMultiply,jbtDiv};
private String[] jbt3={"+","-","x","÷"};
int c=0;
int p=0;
double[] count=new double[7];
public calculator(){
JPanel panel=new JPanel();
ButtonListener listener=new ButtonListener();
for (int i = 0; i < jbt.length; i++) {
jbt[i].addActionListener(listener);
panel.add(jbt[i]);
}
jbtEqual.addActionListener(listener);
jbtReset.addActionListener(listener);
jbtDel.addActionListener(listener);
for (int i = 0; i <jbt2.length ; i++) {
jbt2[i].addActionListener(listener);
panel.add(jbt2[i]);
}
panel.add(jbtEqual);
panel.add(jbtReset);
add(label1,BorderLayout.NORTH);
add(jbtReset,BorderLayout.SOUTH);
add(panel);
}
class ButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i <jbt.length; i++) {
if(e.getSource()==jbt[i]){
if (flagAdd||flagMinus||flagMultiply||flagDiv){
added=accumulation(added,i);
sum=0;
}
if (!flagAdd&!flagMinus&!flagMultiply&!flagDiv){
add=accumulation(add,i);
label1.setText(""+add);
sum=0;
}
if(flagAdd){
label1.setText(add+"+"+added);
}
else if(flagMinus){
label1.setText(add+"-"+added);
}
else if(flagMultiply){
label1.setText(add+"x"+added);
}
else if(flagDiv){
label1.setText(add+"÷"+added);
}
break;
}
}
if(e.getSource()==jbtEqual){
if(flagAdd){
total=add+added;
add=total;
}
else if(flagMinus){
total=add-added;
add=total;
}
else if(flagMultiply){
total=add*added;
add=total;
}
else if(flagDiv){
total=add/added;
add=total;
}
label1.setText(""+total);
}
else if(e.getSource()==jbtReset){
add=0;
added=0;
flagAdd=false;
flagMinus=false;
flagMultiply=false;
flagDiv=false;
clearCount();
label1.setText("请输入数据:");
}
else if(e.getSource()==jbtAdd){
flagAdd=true;
label1.setText(add+"+");
flagMinus=flagMultiply=flagDiv=false;
clearCount();
}
else if(e.getSource()==jbtMinus){
flagMinus=true;
label1.setText(add+"-");
flagDiv=flagMultiply=flagAdd=false;
clearCount();
}
else if(e.getSource()==jbtMultiply){
flagMultiply=true;
label1.setText(add+"x");
flagMinus=flagDiv=flagAdd=false;
clearCount();
}
else if(e.getSource()==jbtDiv){
flagDiv=true;
label1.setText(add+"÷");
flagMinus=flagMultiply=flagAdd=false;
clearCount();
}
}
}
void clearCount(){
for (int i = 0; i < count.length; i++) {
count[i]=0;
}
sum=0;
c=0;
}
double accumulation(double add1,int i){
try{
add1=i;
count[c]=add1;
c++;
p=c;
double v;
if (c!=MaxNumber) {
for (int j = 0; j < count.length; j++) {
v = count[j] * Math.pow(10, p - 1);
sum += v;
p--;
}
errorSum = sum;
return sum;
}
}catch(Exception e){
System.out.println("最大支持"+(MaxNumber-1)+"位数字操作");
}finally{
System.out.println(errorSum);
return errorSum;
}
}
public static void main(String[] args) {
calculator frame=new calculator();
frame.setTitle("Calculator");
frame.setSize(400,200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}