Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Integer类型中的parseInt(String)方法不适用于参数(布尔值)_Java - Fatal编程技术网

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

Java Integer类型中的parseInt(String)方法不适用于参数(布尔值),java,Java,我得到一个错误,类型Integer中的方法parseInt(String)不适用于参数(布尔值) 这是密码 } else if (Integer.parseInt(answerField.getText() == null)) { JOptionPane.showMessageDialog(null, "You did not enter an answer!"); } 我也尝试过这个,但不起作用: (Integer.pa

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

这是密码

} else if (Integer.parseInt(answerField.getText() == null)) {
                    JOptionPane.showMessageDialog(null, "You did not enter an answer!");
                }
我也尝试过这个,但不起作用:

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

我只想检查一下是否没有输入任何内容,如果输入了,则显示一个JOptionPane

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

do{
checkButton.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
if(Integer.parseInt(answerField.getText())==correctAnswer){
计数++;
showMessageDialog(null,“Correct”);
}else if(Integer.parseInt(answerField.getText().length())==0){
showMessageDialog(null,“您没有输入答案!”);
}否则{
计数++;
showMessageDialog(null,“不正确!”);
系统出口(0);
}
}
});
}而(计数<11);

让我们分析一下您的代码

(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!");
}

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

整数。parseInt(answerField.getText()==null)
的计算结果为
Integer.parseInt(“someTextext”==null)

Integer.parseInt(true/false)
尝试将布尔值解析为整数将导致错误

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


如果不为null,则可以尝试将字段值解析为整数。

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

} else if (answerField.getText() == null) {
    JOptionPane.showMessageDialog(null, "You did not enter an answer!");
}
请注意,如果Java中的条件只能接受布尔表达式,而您不能传入整数或任何您认为是truthy或falsy的东西(例如,与C或Javascript不同)。

如果您只想检查应答字段中是否包含字符串,然后,您需要做的就是检查它是否为null或空

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

如果存在空字符串或
null
,则不希望处理对整数的解析,因为这可能会导致
NullPointerException

将布尔表达式传递给parseInt(),该表达式需要字符串。不要试图把每件事都放在一条线上。检查字符串是否为空/null,然后对其进行分析(如果需要对其进行分析)。但是考虑到您所说的,您只需要
if(answerField.getText().isEmpty())
*为什么要使用Integer.parseInt()??为了检查是否有文本,您需要使用这个`if(answerField.getText()==null | | | answerField.getText().equals(“”))注意,如果answerField是JTextField或JTextArea,它的getText()方法将永远不会返回null。我对Java不太熟悉,但我知道在进行类型转换时会使用强制转换语法,这对你的情况可能有帮助。。
} else if (answerField.getText() == null) {
    JOptionPane.showMessageDialog(null, "You did not enter an answer!");
}
if(!("".equals(answerField.getText()) || null == answerField.getText()) {
    // other, non-integer-handling code here
}