繁体   English   中英

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

[英]The method parseInt(String) in the type Integer is not applicable for the arguments (boolean)

我收到错误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);

让我们分析您拥有的代码

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

参数

answerField.getText() == null

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

看起来你想做:

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

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

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

Integer.parseInt(true/false)

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

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

那么如果不为空,您可以尝试按照您的方式将字段值解析为整数。

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

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

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

如果您要做的只是检查answerField中是否包含一些字符串,那么您需要做的就是检查它是否不为空或为空。

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

如果有一个空字符串或者它是null ,您不想处理解析整数,因为这可能会导致NullPointerException

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM