2017-03-11 3 views
1

Hallo, ich bin derzeit ein Anfänger in Java. Der folgende Code ist eine while-Schleife, die weiter ausgeführt wird, bis der Benutzer etwas anderes als "ja" eingibt. Gibt es eine Möglichkeit, dass der Scanner mehr als eine Antwort akzeptiert? Z.B. ja, y, sicher, test1, test2 usw.Wie macht der Java-Scanner mehr als eine String-Eingabe?

+0

Sie suchen eine Methode suchen um zu überprüfen, ob eine bestimmte Zeichenfolge in einer Liste der String-Werte enthalten, wie '[„ja“,„sicher“ , "..."] '. [Einige Antworten hier] (http://stackoverflow.com/questions/1128723/how-can-i-test-if-an-array-contains-a-certain-value) wird Ihnen helfen, Ihr Problem zu lösen. –

Antwort

0

Vergleichen Sie die Benutzereingabe nicht mit einem Wert als Schleifenbedingung?

Beziehungsweise: diese Schleife Zustand wie

etwas ändern
while(! ans.trim().isEmpty()) { 

Mit anderen Worten: halten Looping, während die Benutzer etwas eingibt (so die Schleife beendet, wenn der Benutzer nur Hits eingeben).

1

Verwenden Sie den oder Operator in Ihrem Ausdruck

while (ans.equals("yes") || ans.equals("sure") || ans.equals("test1")) 
     { 
      System.out.print("Test "); 
      ans = in.nextLine(); 
     } 

Aber wenn Sie viele weitere Optionen gehen zu schließen, ist es besser, ein Verfahren bereitzustellen, das die Eingabe als Argument übernimmt, auswertet und gibt True zurück, wenn die Eingabe wird akzeptiert.

0

Sie suchen nach einer Methode, um zu prüfen, ob eine bestimmte Zeichenfolge in einer Liste von Zeichenfolgenwerten enthalten ist. Es gibt verschiedene Möglichkeiten, dies zu erreichen. Eine wäre die Verwendung der ArrayList Methode, um zu überprüfen, ob Ihr Benutzereintrag in in einer Liste von "positiven" Antworten erscheint, die Sie definiert haben.

Mit ArrayList, könnte Ihr Code wie folgt aussehen:

import java.util.Scanner; 

public class Test { 

    public static void main(String[] args) { 

     ArrayList<String> positiveAnswers = new ArrayList<String>(); 
     positiveAnswers.add("yes"); 
     positiveAnswers.add("sure"); 
     positiveAnswers.add("y");  

     Scanner in = new Scanner(System.in); 
     String ans = "yes"; 

     while (positiveAnswers.contains(ans)) 
     { 
      System.out.print("Test "); 
      ans = in.nextLine(); 
     }   
    } 
} 
+0

Warum nicht eine Art 'Set' anstelle einer' ArrayList' verwenden? Es wäre viel effizienter, wenn es viele zu überprüfende Begriffe gäbe. und der Code wäre nicht komplexer (in der Tat fast identisch). –

Verwandte Themen