我创建了一个"计算器"使用GUI。但是当我使用我的输入按钮时,无论我按下哪个操作员,它总是打印出两个数字的乘积。
class Calculator extends JFrame implements ActionListener{
JTextfield firstN, secondN;
JButton addButton, subButton, divButton, mulButton, enter;
JLabel result;
Calculator(){
// here I initialized all the components and added buttons/ActionListeners
}
public void actionPerformed(ActionEvent e) {
int first = Integer.parseInt(firstN.getText());
int second = Integer.parseInt(secondN.getText());
int value = 0;
if(e.getSource() == addButton){
value = first + second;
}else if(e.getSource() == subButton){
value = first - second;
}else if(e.getSource() == divButton){
value = first/second;
}else{
value = first*second;
}
if(e.getSource() == enter)
result.setText(value + "");
}
没有输入按钮,计算器工作正常。我尝试了一个do-while循环,但结果却是无限的......
我想我的if / else语句出了问题,但前4个语句中的一个总是被执行,所以最后一个语句也应该可以解决...
答案 0 :(得分:1)
value
变量不应在actionPerformed
方法中声明。这样,每次单击按钮时都会重置它。 enter按钮也会重置它。你得到了这两个数字的乘积,因为它是第一个if语句的默认分支。应该只有一个if语句,该值应该是类级别字段而不是局部变量:
class Calculator extends JFrame implements ActionListener{
JTextfield firstN, secondN;
JButton addButton, subButton, divButton, mulButton, enter;
JLabel result;
int value;
Calculator(){
// here I initialized all the components and added buttons/ActionListeners
}
public void actionPerformed(ActionEvent e) {
int first = Integer.parseInt(firstN.getText());
int second = Integer.parseInt(secondN.getText());
if(e.getSource() == addButton){
value = first + second;
}else if(e.getSource() == subButton){
value = first - second;
}else if(e.getSource() == divButton){
value = first/second;
}else if (e.getSource() == mulButton){
value = first*second;
}else if(e.getSource() == enter)
result.setText(value + "");
}
}
答案 1 :(得分:0)
自上次阻止 {value = first * second; } 没有if条件,它不仅会在 e.getSource == mulButton 时执行,而且还会在 e.getSource == enter 时执行。< / p>
解决方案可能是用这段代码替换最后一个else语句:
} else if(e.getSource == mulButton) {
value = first*second;
}