一下是我自己编写的计算器代码,但在第一次运行时,按下数字按钮再按运算按钮就变成0了,第二次运行时就正常了,就是不知道为什么,请高手指教?谢谢!
package majian;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class subjframe extends JFrame{
public subjframe(){}
public subjframe(String title){
super(title);
}
}
public class Calculator {
JFrame frame;int j,m=0;
String string2="";
Container contentPane;
double numbers=0;
char lastchar;
JButton buttons[],equal,dot,plus,minus,multi,dive,sqrt,PN,clear,delete,currenttime,
sec,csc,sin,cos,tan,cot,ln,twox,threex,manyx,empty1,empty2,
empty3,empty4,empty5,instead;
JTextField result;JPanel pane1,pane2;
boolean dotexist,equaledoperation,deltoperation;
public Calculator(){
frame=new subjframe("计算器");
Container contentPane=frame.getContentPane();
pane1=new JPanel();
pane2=new JPanel();
result=new JTextField("0",20);
result.setBackground(Color.white);
result.setEditable(false);
pane1.add(result);
pane2.setLayout(new GridLayout(5,7,5,10));
contentPane.add(pane1,BorderLayout.NORTH);
contentPane.add(pane2,BorderLayout.SOUTH);
buttons=new JButton[10];
for(int i=0;i<=9;i++)
buttons[i]=new JButton(""+i);
empty1=new JButton("");
empty2=new JButton("");
empty3=new JButton("");
empty4=new JButton("");
empty5=new JButton("");
delete=new JButton("delete");
sin=new JButton("sin");
cos=new JButton("cos");
tan=new JButton("tan");
cot=new JButton("cot");
sec=new JButton("sec");
csc=new JButton("csc");
ln=new JButton("ln");
instead=new JButton("1/x");
dot=new JButton(".");
plus=new JButton("+");
minus=new JButton("-");
multi=new JButton("*");
dive=new JButton("÷");
sqrt=new JButton("√");
equal=new JButton("=");
PN=new JButton("+/-");
clear=new JButton("C");
twox=new JButton("x^2");
threex=new JButton("x^3");
pane2.add(empty1);pane2.add(empty2);
pane2.add(empty3);pane2.add(empty4);
pane2.add(empty5);pane2.add(delete);
pane2.add(clear);pane2.add(sin);
pane2.add(cos);pane2.add(buttons[7]);
pane2.add(buttons[8]);pane2.add(buttons[9]);
pane2.add(plus);pane2.add(twox);
pane2.add(tan);pane2.add(cot);
pane2.add(buttons[4]);pane2.add(buttons[5]);
pane2.add(buttons[6]);pane2.add(minus);
pane2.add(threex);pane2.add(sec);
pane2.add(csc);pane2.add(buttons[1]);
pane2.add(buttons[2]);pane2.add(buttons[3]);
pane2.add(multi);pane2.add(PN);
pane2.add(instead);pane2.add(ln);
pane2.add(buttons[0]);pane2.add(dot);
pane2.add(equal);pane2.add(dive);pane2.add(sqrt);
Action action=new Action();
for(int i=0;i<=9;i++)
buttons[i].addActionListener(action);
dot.addActionListener(action);
delete.addActionListener(action);
sin.addActionListener(action);
cos.addActionListener(action);
tan.addActionListener(action);
cot.addActionListener(action);
sec.addActionListener(action);
csc.addActionListener(action);
instead.addActionListener(action);
ln.addActionListener(action);
plus.addActionListener(action);
minus.addActionListener(action);
multi.addActionListener(action);
dive.addActionListener(action);
sqrt.addActionListener(action);
equal.addActionListener(action);
PN.addActionListener(action);
clear.addActionListener(action);
twox.addActionListener(action);
threex.addActionListener(action);
frame.setSize(500,400);
frame.show();
}
//对按钮的反应
private class Action implements ActionListener{
public void actionPerformed(ActionEvent e){
JButton get=(JButton)e.getSource();
if(get==clear){
result.setText("0");
numbers=0;
dotexist=false;
lastchar='E';
}
else if(get==plus){
deltwith('+');
equaledoperation=false;
deltoperation=true;
}
else if(get==minus){
deltwith('-');
equaledoperation=false;
deltoperation=true;
}
else if(get==multi){
deltwith('*');
equaledoperation=false;
deltoperation=true;
}
else if(get==dive){
deltwith('÷');
equaledoperation=false;
deltoperation=true;
}
else if(get==PN){
deltwith('p');
deltwith('=');
equaledoperation=true;
deltoperation=true;
}
else if(get==sqrt){
deltwith('s');
deltwith('=');
equaledoperation=true;
deltoperation=true;
}
else if(get==equal){
deltwith('=');
equaledoperation=true;
deltoperation=true;
}
else if(get==twox){
deltwith('t'); //t表示求平方的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==threex) {
deltwith('r'); //r表示求立方的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==sin){
deltwith('S'); //S表示求正弦的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==cos){
deltwith('c'); //c表示求余弦 的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==tan){
deltwith('a'); //a表示求正切的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==cot){
deltwith('o'); //o表示求余切的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==sec){
deltwith('e'); //e表示求正割的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==csc){
deltwith('h'); //h表示求余割的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==instead){
deltwith('d'); //d表示求倒数的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==ln){
deltwith('l'); //l表示求对数的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==delete){
deltwith('D');
equaledoperation=true;
deltoperation=false;
}
else{
for(int i=0;i<10;i++)
if(get==buttons[i]){
if(result.getText().equals("0"))
result.setText(""+i);
else if(!deltoperation)
result.setText(result.getText()+i);
else{
result.setText(""+i);
deltoperation=false;
}
}
}
if(get==dot&&!dotexist){
result.setText(result.getText()+".");
dotexist=true;
}
}
}
package majian;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class subjframe extends JFrame{
public subjframe(){}
public subjframe(String title){
super(title);
}
}
public class Calculator {
JFrame frame;int j,m=0;
String string2="";
Container contentPane;
double numbers=0;
char lastchar;
JButton buttons[],equal,dot,plus,minus,multi,dive,sqrt,PN,clear,delete,currenttime,
sec,csc,sin,cos,tan,cot,ln,twox,threex,manyx,empty1,empty2,
empty3,empty4,empty5,instead;
JTextField result;JPanel pane1,pane2;
boolean dotexist,equaledoperation,deltoperation;
public Calculator(){
frame=new subjframe("计算器");
Container contentPane=frame.getContentPane();
pane1=new JPanel();
pane2=new JPanel();
result=new JTextField("0",20);
result.setBackground(Color.white);
result.setEditable(false);
pane1.add(result);
pane2.setLayout(new GridLayout(5,7,5,10));
contentPane.add(pane1,BorderLayout.NORTH);
contentPane.add(pane2,BorderLayout.SOUTH);
buttons=new JButton[10];
for(int i=0;i<=9;i++)
buttons[i]=new JButton(""+i);
empty1=new JButton("");
empty2=new JButton("");
empty3=new JButton("");
empty4=new JButton("");
empty5=new JButton("");
delete=new JButton("delete");
sin=new JButton("sin");
cos=new JButton("cos");
tan=new JButton("tan");
cot=new JButton("cot");
sec=new JButton("sec");
csc=new JButton("csc");
ln=new JButton("ln");
instead=new JButton("1/x");
dot=new JButton(".");
plus=new JButton("+");
minus=new JButton("-");
multi=new JButton("*");
dive=new JButton("÷");
sqrt=new JButton("√");
equal=new JButton("=");
PN=new JButton("+/-");
clear=new JButton("C");
twox=new JButton("x^2");
threex=new JButton("x^3");
pane2.add(empty1);pane2.add(empty2);
pane2.add(empty3);pane2.add(empty4);
pane2.add(empty5);pane2.add(delete);
pane2.add(clear);pane2.add(sin);
pane2.add(cos);pane2.add(buttons[7]);
pane2.add(buttons[8]);pane2.add(buttons[9]);
pane2.add(plus);pane2.add(twox);
pane2.add(tan);pane2.add(cot);
pane2.add(buttons[4]);pane2.add(buttons[5]);
pane2.add(buttons[6]);pane2.add(minus);
pane2.add(threex);pane2.add(sec);
pane2.add(csc);pane2.add(buttons[1]);
pane2.add(buttons[2]);pane2.add(buttons[3]);
pane2.add(multi);pane2.add(PN);
pane2.add(instead);pane2.add(ln);
pane2.add(buttons[0]);pane2.add(dot);
pane2.add(equal);pane2.add(dive);pane2.add(sqrt);
Action action=new Action();
for(int i=0;i<=9;i++)
buttons[i].addActionListener(action);
dot.addActionListener(action);
delete.addActionListener(action);
sin.addActionListener(action);
cos.addActionListener(action);
tan.addActionListener(action);
cot.addActionListener(action);
sec.addActionListener(action);
csc.addActionListener(action);
instead.addActionListener(action);
ln.addActionListener(action);
plus.addActionListener(action);
minus.addActionListener(action);
multi.addActionListener(action);
dive.addActionListener(action);
sqrt.addActionListener(action);
equal.addActionListener(action);
PN.addActionListener(action);
clear.addActionListener(action);
twox.addActionListener(action);
threex.addActionListener(action);
frame.setSize(500,400);
frame.show();
}
//对按钮的反应
private class Action implements ActionListener{
public void actionPerformed(ActionEvent e){
JButton get=(JButton)e.getSource();
if(get==clear){
result.setText("0");
numbers=0;
dotexist=false;
lastchar='E';
}
else if(get==plus){
deltwith('+');
equaledoperation=false;
deltoperation=true;
}
else if(get==minus){
deltwith('-');
equaledoperation=false;
deltoperation=true;
}
else if(get==multi){
deltwith('*');
equaledoperation=false;
deltoperation=true;
}
else if(get==dive){
deltwith('÷');
equaledoperation=false;
deltoperation=true;
}
else if(get==PN){
deltwith('p');
deltwith('=');
equaledoperation=true;
deltoperation=true;
}
else if(get==sqrt){
deltwith('s');
deltwith('=');
equaledoperation=true;
deltoperation=true;
}
else if(get==equal){
deltwith('=');
equaledoperation=true;
deltoperation=true;
}
else if(get==twox){
deltwith('t'); //t表示求平方的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==threex) {
deltwith('r'); //r表示求立方的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==sin){
deltwith('S'); //S表示求正弦的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==cos){
deltwith('c'); //c表示求余弦 的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==tan){
deltwith('a'); //a表示求正切的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==cot){
deltwith('o'); //o表示求余切的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==sec){
deltwith('e'); //e表示求正割的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==csc){
deltwith('h'); //h表示求余割的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==instead){
deltwith('d'); //d表示求倒数的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==ln){
deltwith('l'); //l表示求对数的字符
equaledoperation=true;
deltoperation=true;
}
else if(get==delete){
deltwith('D');
equaledoperation=true;
deltoperation=false;
}
else{
for(int i=0;i<10;i++)
if(get==buttons[i]){
if(result.getText().equals("0"))
result.setText(""+i);
else if(!deltoperation)
result.setText(result.getText()+i);
else{
result.setText(""+i);
deltoperation=false;
}
}
}
if(get==dot&&!dotexist){
result.setText(result.getText()+".");
dotexist=true;
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货