2017-03-16 99 views
0

我收到错误在Integer类型的方法parseInt函数(字符串)不适用于参数(布尔)在Integer类型的方法parseInt函数(字符串)不适用于参数(布尔)

下面是代码

} 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); 
+4

您将一个布尔表达式传递给parseInt(),它需要一个String。不要试图在一条线上做所有事情。检查字符串是否为空/空值,然后解析它(如果需要解析)。但是,根据你所说的,你所需要的只是'if(answerField.getText()。isEmpty())' –

+0

*你为什么要使用Integer.parseInt()? 为了检查是否有文本,你需要使用这个 if(answerField.getText()== null || answerField.getText()。equals(“”)) – Tano

+0

请注意,如果answerField是一个JTextField或一个JTextArea,它的getText()方法永远不会返回null。 –

回答

0

让analise代码你有

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

所有值的解析INT法的内部监守他们正在执行导致真或假两个值之间的比较,返回一个布尔值。您应该使用Boolean.parseBoolean()返回无论是“真”或“假”的字符串

0

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

Integer.parseInt(true/false) 

尝试解析一个布尔值作为整数将结果作为错误

要检查你的字段为空,只能做if(answerField.getText() == null)

那么如果不为空,你可以尝试将字段值解析到一个整数你的方式。

0

我不知道为什么你要拨打的Integer.parseInt,因为你已经在你的病情布尔表达式:

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

注意,如果在Java中的条件只能接受布尔表达式,和安:我“T传递一个整数或任何其他你所认为的truthyfalsy(不像C或Java脚本,例如)。

0

如果全部你想要做的是检查answerField是否有一些字符串,那么你所需要做的就是检查它是否为空或空。

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

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

相关问题