尝试在 java GUI 中构建计算器
Trying to build a calculator in java GUI
在这里,我只是尝试在按下 (=) 按钮时将第一个数字添加到第二个数字。按下 (=) 按钮时,此代码仅显示屏幕上的第二个数字。一旦这个工作,我希望它与不同的算术运算符按钮一起工作,例如(+ - * /)。如果你能弄清楚我的代码,请帮忙。
private class TheHandler 实现 ActionListener{
public void actionPerformed(ActionEvent e) {
//add values to buttons
String num = "";
if(e.getSource()==btn[0]){
num = "7";
}else if(e.getSource()==btn[1]){
num = "8";
}else if(e.getSource()==btn[2]){
num = "9";
}else if(e.getSource()==btn[5]){
num = "4";
}else if(e.getSource()==btn[6]){
num = "5";
}else if(e.getSource()==btn[7]){
num = "6";
}else if(e.getSource()==btn[10]){
num = "1";
}else if(e.getSource()==btn[11]){
num = "2";
}else if(e.getSource()==btn[12]){
num = "3";
}else if(e.getSource()==btn[15]){
num = "0";
}
//set the values to the text field
if (tDisplay.getText().equals("0"))
tDisplay.setText(num);
else
tDisplay.setText(tDisplay.getText()+num);
//temporary values to be stored when arithmetic operators are pressed
double tempValue =0;
double tempValue2 =0;
double equalsTo=0;
//if = button is pressed
if(e.getSource()==btn[19]){
tempValue2 = Double.parseDouble(tDisplay.getText());
equalsTo = tempValue+tempValue2;
tDisplay.setText(String.valueOf(equalsTo));
}
//if + button is pressed
if(e.getSource()==btn[3]){
tempValue = Double.parseDouble(tDisplay.getText());
tDisplay.setText("");
}
}
}
if(e.getSource()==btn[19]){
tempValue2 = Double.parseDouble(tDisplay.getText());
equalsTo = tempValue+tempValue2;
tDisplay.setText(String.valueOf(equalsTo));
}
正在按照您的指示去做。
tempValue2 保持为 0 因为
double tempValue =0;
所以总和总是 tempValue2
因为 tempValue2 + 0 == tempValue2
你为 tempValue2
parseDouble 但你没有为 tempValue
这样做
您似乎已经声明了局部变量来存储您的中间结果,因此每次执行您的操作时,这些变量都会重新初始化为 0。相反,您可能希望它们是 class 属性,因此变量中的值可以 "survive" 多次调用 actionPerformed 方法。
在这里,我只是尝试在按下 (=) 按钮时将第一个数字添加到第二个数字。按下 (=) 按钮时,此代码仅显示屏幕上的第二个数字。一旦这个工作,我希望它与不同的算术运算符按钮一起工作,例如(+ - * /)。如果你能弄清楚我的代码,请帮忙。
private class TheHandler 实现 ActionListener{
public void actionPerformed(ActionEvent e) {
//add values to buttons
String num = "";
if(e.getSource()==btn[0]){
num = "7";
}else if(e.getSource()==btn[1]){
num = "8";
}else if(e.getSource()==btn[2]){
num = "9";
}else if(e.getSource()==btn[5]){
num = "4";
}else if(e.getSource()==btn[6]){
num = "5";
}else if(e.getSource()==btn[7]){
num = "6";
}else if(e.getSource()==btn[10]){
num = "1";
}else if(e.getSource()==btn[11]){
num = "2";
}else if(e.getSource()==btn[12]){
num = "3";
}else if(e.getSource()==btn[15]){
num = "0";
}
//set the values to the text field
if (tDisplay.getText().equals("0"))
tDisplay.setText(num);
else
tDisplay.setText(tDisplay.getText()+num);
//temporary values to be stored when arithmetic operators are pressed
double tempValue =0;
double tempValue2 =0;
double equalsTo=0;
//if = button is pressed
if(e.getSource()==btn[19]){
tempValue2 = Double.parseDouble(tDisplay.getText());
equalsTo = tempValue+tempValue2;
tDisplay.setText(String.valueOf(equalsTo));
}
//if + button is pressed
if(e.getSource()==btn[3]){
tempValue = Double.parseDouble(tDisplay.getText());
tDisplay.setText("");
}
}
}
if(e.getSource()==btn[19]){
tempValue2 = Double.parseDouble(tDisplay.getText());
equalsTo = tempValue+tempValue2;
tDisplay.setText(String.valueOf(equalsTo));
}
正在按照您的指示去做。
tempValue2 保持为 0 因为
double tempValue =0;
所以总和总是 tempValue2
因为 tempValue2 + 0 == tempValue2
你为 tempValue2
parseDouble 但你没有为 tempValue
您似乎已经声明了局部变量来存储您的中间结果,因此每次执行您的操作时,这些变量都会重新初始化为 0。相反,您可能希望它们是 class 属性,因此变量中的值可以 "survive" 多次调用 actionPerformed 方法。