2016-04-27 5 views
-1

Mein Hauptmenü befindet sich in der while-Schleife, die prüft, ob der Benutzer den Vorgang beenden möchte.Kann man hasNext() case insensitive machen?

while(!sc.hasNext("quit")){ 
    ...} 

Kann ich hasNext() Groß- und Kleinschreibung, so Benutzer eine beliebige Variation von Fällen, in Wort eingeben können 'beenden', wie Quit oder Quit?

+2

Ja. [Lesen Sie die Javadocs] (https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html). Der 'Scanner.hasNext (String)' ist ein Muster. Sie können bei Bedarf auch den 'Scanner.hasNext (Pattern)' verwenden. – KevinO

Antwort

1

Ich glaube, das String-Muster "^ (? I) quit $" an die sc.hasNext(String) übergeben wird funktionieren.

Ich habe keinen einfachen Scanner eingerichtet, um zu testen, aber die Regex sollte funktionieren.

Allerdings würde ich vorschlagen, read this answer, dass die Einbettung der Prüfung empfiehlt, wenn die Verwendung von Stdin möglicherweise nicht der beste Ansatz sein.


Beispiel Testergebnisse der Regex: enter image description here

0

Ein Weg, um dies ist durch die Benutzereingabe zu nehmen und automatisch alle Zeichen in dem Stachel zu Groß- oder Kleinschreibung zu senden und dann die Kontrolle. Dann wäre es egal, was der Benutzer eingibt.

String str1 = new String(); 
str1 = scanner.nextLine(); 
str1.toUpperCase(); 
while(str1.equals("QUIT")){....} 
+0

Um, nein. Sie können 'str1 ==" QUIT "' nicht tun. Stringvergleiche werden in Java nicht so durchgeführt. – KevinO

+0

Ich weiß, dass Sie die. Equals() verwenden müssen, mein Fehler. –