Java 可以使hasNext()不区分大小写吗?

Java 可以使hasNext()不区分大小写吗?,java,java.util.scanner,Java,Java.util.scanner,我的主菜单在while循环中,它检查用户是否想要退出 while(!sc.hasNext("quit")){ ...} 我是否可以使hasNext()不区分大小写,以便用户可以在单词“quit”中键入任何大小写变化,如quit或quit?我相信传递给sc.hasNext(String)的字符串模式“^(?I)quit$”会起作用 final String QUIT_PAT = "^(?i)quit$"; ... while (! sc.hasNext(QUIT_PAT)) { ...

我的主菜单在while循环中,它检查用户是否想要退出

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

我是否可以使hasNext()不区分大小写,以便用户可以在单词“quit”中键入任何大小写变化,如quit或quit?

我相信传递给
sc.hasNext(String)
的字符串模式“^(?I)quit$”会起作用

final String QUIT_PAT = "^(?i)quit$";
...
while (! sc.hasNext(QUIT_PAT)) {
  ...
}
我没有一个简单的扫描仪来测试,但是正则表达式应该可以工作

然而,我建议在使用stdin时嵌入检查可能不是最好的方法


正则表达式的示例测试结果:

解决这个问题的一种方法是接受用户输入,并自动将sting中的所有字符发送到大写或小写,然后进行检查。那么用户输入什么就无关紧要了

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

对Scanner.hasNext(String)是一个模式。如果需要,您也可以使用
Scanner.hasNext(Pattern)
。嗯,不可以。您不能执行
str1==“退出”
。字符串比较在Java中不是这样做的。我知道您需要使用.equals(),这是我的错误。