2017-01-23 7 views
-1

Ich habe eine Methode, die True oder False zurückgibt, je nachdem ob die Eingabe 'y' oder 'n' ist. Ich möchte jedoch, dass es einen Fehler zurückgibt, wenn etwas anderes in die gestellte Frage eingegeben wird. Ich frage, wie man einen String zum Beispiel in einer Booleschen Methode zurückgibt. Hier ist, was ich bisher:Wie gibt man einen Fehler in einer Booleschen Methode zurück?

public static boolean askYesNo(String question1) { 
    question = question1; 
    System.out.println(question); 
    answer = kbdScanner.next(); 
    if (answer.charAt(0) == 'y') { 
     return true; 
    } 
    else if (answer.charAt(0) == 'n') { 
     return false; 
    } 
    return ?????; 
} 

Dank

+2

Sie möchten vielleicht über Ausnahmen lesen; oder Sie möchten 'Boolean' als Rückgabetyp verwenden (so dass Sie' null' zurückgeben und dann im aufrufenden Code auf 'null' prüfen können); oder Sie möchten einfach eine Schleife machen, bis Sie stattdessen "y" oder "n" erhalten. –

+0

Sie können ['Optional '] (https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html) verwenden. Sie können 'Optional.of (true)', 'Optional.of (false)' oder 'Optional.empty()' zurückgeben. Dies ist ähnlich wie Andys "Boolescher" Vorschlag, aber expliziter (und erfordert Java8). –

+0

Sie können eine RuntimeException auslösen, wenn die Methode keine überprüfte Exception auslösen soll. –

Antwort

0

eine mögliche Lösung ist die Antwort zu validieren, bevor die Methode aufgerufen wird. So in abstrakten Code:

while (answer is not y or n) { 
    ask question again 
} 
call method 
+0

Ja, es funktioniert! Aber ich verwendete (antwort.charAt (0)! = 'Y' && antwort.charAt (0)! = 'N') als Bedingung für die while-Schleife. Vielen Dank! – Sev

+0

Sie sind herzlich willkommen. Ich weiß, es ist nicht genau die Antwort auf die Frage, die Sie gestellt haben (eine Zeichenfolge in einer booleschen Methode zurückgeben), aber ich denke, das ist, was Sie Ihr Programm tun soll? – Sweenah

+0

Ja, ich möchte es grundsätzlich gehen, nein, mag diese Antwort nicht, versuche es noch einmal. – Sev

0

Just do
throw new IllegalArgumentException(question1);

1

Verfahren in Java kann immer nur einen Rückgabetyp. In Ihrem Fall ist das boolesch, so dass Sie keine Zeichenfolge zurückgeben können.

Was Sie benötigen, ist eine Ausnahme. Ausnahmen können z.B. wenn etwas Unerwartetes passiert. Lesen Sie mehr darüber hier: http://beginnersbook.com/2013/04/java-exception-handling/

In Ihrem Fall schlage ich vor, eine IllegalArgumentException zu verwenden, da Sie den Fall behandeln möchten, dass die Methodeneingabe nicht gültig ist.

+0

Ok, ich verstehe. Es ist viel kürzer als die gesamte while-Schleife, aber es beendet auch diese Methode nicht? – Sev

+0

Ja, das Auslösen einer Ausnahme beendet die Methode an diesem Punkt. Sie müssen die Ausnahme behandeln, bei der Sie die Methode aufrufen. d.h. unter Verwendung eines Versuch-Fang-Blocks. Erklärung und Details siehe [hier] (http://beginnersbook.com/2013/04/try-catch-in-java/) – Sheep

Verwandte Themen