2017-03-16 103 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

相關問題