0

我正在尝试制作一个计算器,其中一部分是实现一个东西,如果它从第一个文本区域读取数字 x,然后将第二个文本区域读取为 0,它将发出一条错误消息。以下似乎不起作用......

私人无效divideButtonActionPerformed(java.awt.event.ActionEvent evt){

    int number1, number2;
    int y = Integer.parseInt(this.firstInput.getText());
    if (y == 0) {
        JOptionPane.showMessageDialog(this, "Cannot divide by 0", "Error", JOptionPane.ERROR_MESSAGE);
    }
    try {
        number1 = Integer.parseInt(
                this.firstInput.getText());


    } catch (Exception e) {
        JOptionPane.showMessageDialog(this, "Bad first number", "Error", JOptionPane.ERROR_MESSAGE);
        return;
    }
    try {
        number2 = Integer.parseInt(
                this.secondInput.getText());
    } catch (Exception e) {
        JOptionPane.showMessageDialog(this, "Bad second number", "Error", JOptionPane.ERROR_MESSAGE);
        return;
    }

    int answer = number1 / number2;
    this.theAnswer.setText(
            "The calculated answer is: " + answer);
}                                            

它似乎没有显示我想要的错误。有人可以帮忙吗?

- - - - -编辑 - - - - -

抱歉,伙计们,我刚刚注意到它说的是 this.firstInput 而不是 this.secondInput。我完全捂脸对不起......

谢啦!

4

1 回答 1

1

除了您尝试检查第一个字段而不是第二个字段的值这一事实之外,您的代码结构仍然允许执行计算,相反,您应该使用if-else例如语句。

int number1, number2;
try {
    number1 = Integer.parseInt(
            this.firstInput.getText());


} catch (Exception e) {
    JOptionPane.showMessageDialog(this, "Bad first number", "Error", JOptionPane.ERROR_MESSAGE);
    return;
}
try {
    number2 = Integer.parseInt(
            this.secondInput.getText());
} catch (Exception e) {
    JOptionPane.showMessageDialog(this, "Bad second number", "Error", JOptionPane.ERROR_MESSAGE);
    return;
}
if (number2 == 0) {
    JOptionPane.showMessageDialog(this, "Cannot divide by 0", "Error", JOptionPane.ERROR_MESSAGE);
} else {
    int answer = number1 / number2;
    this.theAnswer.setText(
            "The calculated answer is: " + answer);            
}

}

此外,您已经完成了Strings 的转换,您不妨使用已有的结果 - 或者String如果您想完全避免对话,请尝试进行比较...

于 2013-10-16T00:18:21.890 回答