2017-03-16 2 views
0

Ich erhalte die Fehler Die Methode parseInt (String) in der Art Integer für die Argumente nicht anwendbar ist (boolean)Die Methode parseInt (String) in der Art Integer ist für die Argumente (boolean) nicht anwendbar

Hier ist der Code

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

ich auch dies versucht haben, aber es funktioniert nicht:

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

&

Ich möchte nur überprüfen, ob nichts eingegeben wurde und wenn ja, ein JOptionPane anzeigen.

Edit: Das var answerField ist ein JTextField, in dem der Benutzer eine mathematische Frage beantwortet. So ist die Action bestimmt dann, ob die Antwort richtig ist, daher der parseInt (weil es eine mathematische Operation ist)

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

Sie übergeben einen booleschen Ausdruck an parseInt(), der einen String erwartet. Versuche nicht, alles in einer einzigen Zeile zu machen. Überprüfen Sie, ob die Zeichenfolge leer ist/null, und analysieren Sie sie dann (wenn sie analysiert werden muss). Aber wenn du das sagst, brauchst du nur 'if (answerField.getText(). IsEmpty()) ' –

+0

* Warum willst du Integer.parseInt() ?? Um zu überprüfen, ob Text vorhanden ist, müssen Sie folgendes verwenden: 'if (answerField.getText() == null || answerField.getText(). Equals (" ")) – Tano

+0

Beachten Sie, dass wenn answerField ein JTextField oder a ist JTextArea, die getText() -Methode gibt niemals null zurück. –

Antwort

0

Lets analise den Code, den Sie haben

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

der Parameter

answerField.getText() == null 

gibt einen booleschen Wert zurück, und die Methode Integer.parseInt(bool) ist in der Integer-Klasse nicht definiert.

Es sieht aus wie Sie wollen:

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

alle Werte innerhalb der Parse-int Methode eine boolean zurückgeben becuase sie einen Vergleich zwischen zwei Werten durchführen, die entweder in wahr oder falsch führen. Sie sollten Boolean.parseBoolean() verwenden, entweder „true“ oder „false“ Strings

0

Integer.parseInt(answerField.getText() == null) ausgewertet zurückzukehren als Integer.parseInt("someTextext" == null) dann

Integer.parseInt(true/false) 

Versuchen Sie, eine boolean zu analysieren, wie ein Integer als Fehler führen

um zu prüfen, ist Ihr Feld null ist, nur if(answerField.getText() == null) tun

dann, wenn nicht null ist, können Sie versuchen, den Feldwert auf einen Integer, wie Sie tat zu analysieren.

0

Ich bin nicht sicher, warum Sie Integer.parseInt nennen wollen, weil Sie bereits einen Booleschen Ausdruck in Ihrem Zustand haben:

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

Beachten Sie, dass, wenn die Bedingungen in Java nur Boolesche Ausdrücke annehmen können, und Sie couldn Übergeben Sie keine Integer oder was auch immer Sie sonst denken würden als truthy oder falsy (im Gegensatz zu C oder Javascript, zum Beispiel).

0

Wenn alle Sie tun möchten, ist zu überprüfen, um zu sehen, ob es eine Zeichenfolge ist in answerField enthalten ist, dann alles, was Sie tun müssen, ist, überprüfen Sie, ob es nicht null oder leer ist.

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

Sie tun nicht behandeln möchten die ganze Zahl Parsen, wenn es eine leere Zeichenfolge ist, oder wenn es null, denn das ist in einem NullPointerException führen könnte.

Verwandte Themen