2016-06-26 5 views
0

Ich habe Validierung für Benutzereingabe gelesen, wenn es keine Zahl ist oder wenn Eingabe kein Zeichen ist, aber wie überprüfe ich, ob die Benutzereingabe etwas ist, für das ich definiert habe Sie?Validiere Eingabewort mit Scanner.hasNext()

System.out.println("What meal would you like to eat?" 
     + " (appetizer, soup, salad, main, or dessert)"); 
String meal = console.next(); 

Ich sah

Scanner sc = new Scanner(System.in); 
System.out.println("Please enter a vowel, lowercase!"); 
while (!sc.hasNext("[aeiou]")) { 
    System.out.println("That's not a vowel!"); 
    sc.next(); 
} 

aber Compiler nicht mag, wenn ich

ändern
(!sc.hasNext("[aeiou]")) 

zu

(!sc.hasNext("[appetizer, soup, salad, main, dessert]")) 
+1

Sie können Sachen nicht ausmachen. Was bedeutet der String (die Dokumentation sagt)? – user2864740

+0

Weil das kein gültiges Muster ist. Siehe: [hasNext (String-Muster)] (http://www.tutorialspoint.com/java/util/scanner_hasnext_string.htm) – Li357

+2

hmmm versuchen 'sc.hasNext (" Vorspeise | Suppe | Salat | Haupt | Dessert ")' – niceman

Antwort

0

Vielleicht haben Sie es auf diese Weise versuchen wollen (Sie können auch kann Enums anstelle von HashSet verwenden):

System.out.println("What meal would you like to eat?" 
     + " (appetizer, soup, salad, main, or dessert)"); 
HashSet<String> vowels = new HashSet<String>(); 
vowels.add("appetizer"); 
vowels.add("soup"); 
vowels.add("salad"); 
vowels.add("main"); 
vowels.add("dessert"); 
Scanner sc = new Scanner(System.in); 
System.out.println("Please enter a vowel, lowercase!"); 
while (sc.hasNext()) { 
    String vowel = sc.next(); 
    if (vowels.contains(vowel)) { 
     System.out.println("That's a vowel!"); 
    } else { 
     System.out.println("That's not a vowel!"); 
    } 
} 
0

Sie können wie folgt vorgehen. Überprüfen Sie, ob sich die Eingabe des Benutzers in einem Array zulässiger Werte befindet.

List<String> meals = Arrays.asList(
    new String[]{"appetizer", "soup", "salad","main","dessert"}); 
String meal = console.next().toLowercase(); 
if(meals.contains(meal)){ 
    //Do what you want with correct input. 
}