boger类型中的方法parseInt(String)不适用于参数(boolean)

时间:2017-03-16 19:43:29

标签: java

我收到错误 Integer类型中的方法parseInt(String)不适用于参数(布尔值)

这是代码

} else if (Integer.parseInt(answerField.getText() == null)) {
                    JOptionPane.showMessageDialog(null, "You did not enter an answer!");
                }

我也尝试了这个,但它不起作用:

(Integer.parseInt(answerField.getText().equals("")))

&安培;

(Integer.parseInt(answerField.getText().length()) == 0)

我只想查看是否输入了任何内容,如果是,则显示JOptionPane。

编辑:var answerField是一个JTextField,用户输入数学问题的答案。所以ActionListener然后确定答案是否正确,因此parseInt(因为它是一个数学运算)

do {
        checkButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (Integer.parseInt(answerField.getText()) == correctAnswer) {
                    count++;
                    JOptionPane.showMessageDialog(null, "Correct");

                } else if (Integer.parseInt(answerField.getText().length()) == 0) {
                    JOptionPane.showMessageDialog(null, "You did not enter an answer!");
                } else {
                    count++;
                    JOptionPane.showMessageDialog(null, "Incorrect!");
                    System.exit(0);
                }
            }
        });
    } while (count < 11);

5 个答案:

答案 0 :(得分:0)

让我们分析你的代码

(Integer.parseInt(answerField.getText() == null))

参数

answerField.getText() == null

返回一个布尔值,并且在Integer类中没有定义方法Integer.parseInt(bool)

看起来你想要这样做:

else if (someConditionHere) {
      Integer.parseInt(answerField.getText());
      JOptionPane.showMessageDialog(null, "You did not enter an answer!");
}

答案 1 :(得分:0)

parse int方法中的所有值都返回一个布尔值,因为它们在两个值之间执行比较,导致true或false。您应该使用Boolean.parseBoolean()返回“true”或“false”字符串

答案 2 :(得分:0)

Integer.parseInt(answerField.getText() == null)被评估为 Integer.parseInt("someTextext" == null)然后

Integer.parseInt(true/false)

尝试解析布尔值,因为整数将导致错误

要检查您的字段是否为空,只需执行if(answerField.getText() == null)

然后如果不为null,您可以尝试按照您的方式将字段值解析为Integer。

答案 3 :(得分:0)

我不确定你为什么要调用Integer.parseInt,因为你的条件已经有了一个布尔表达式:

} else if (answerField.getText() == null) {
    JOptionPane.showMessageDialog(null, "You did not enter an answer!");
}

请注意,如果Java中的条件只能接受布尔表达式,并且您无法传入整数或其他任何您认为是 truthy falsy 的其他内容(例如,与C或Javascript不同)。

答案 4 :(得分:0)

如果 all 你要做的是检查answerField中是否包含一些字符串,那么你需要做的就是检查它是否为空或空。< / p>

if(!("".equals(answerField.getText()) || null == answerField.getText()) {
    // other, non-integer-handling code here
}

你做 想要处理解析整数,如果有一个空字符串或它是null,因为这可能导致{{1} }。