JAVA - 当我进入过滤器或排序离开时,为什么我的while循环不会停止?

时间:2014-03-24 01:11:28

标签: java

while((!(command.toLowerCase().contains("filter")==true) || 
       !(command.toLowerCase().contains("sort")==true))){
    System.out.println("Input is invalid. Please try again.");
    command = range.nextLine();    
}

3 个答案:

答案 0 :(得分:2)

您正在使用||进行检查,并且您的一条陈述将始终为真。试试&&

答案 1 :(得分:0)

您的情况可以改写为:

(((command.toLowerCase().contains("filter")==false) || 
(command.toLowerCase().contains("sort")==false)))

所以这意味着,在人类语言中,虽然命令不包含文件管理器OR命令不包含排序,然后保持循环。因此,如果只键入其中一个,则第二个条件为true,整个语句为true。对于你所拥有的,如果你编写包含它们的字符串,那么它就会结束,例如:“filter is sorted”。

如果你想只输入一个单词,你必须使用AND,这是&&,结果:

(((command.toLowerCase().contains("filter")==false) && 
(command.toLowerCase().contains("sort")==false)))

答案 2 :(得分:0)

如果您的命令必须包含“过滤器”或“排序”。然后,下面的布尔表达式满足。

command.toLowerCase().contains("filter") || command.toLowerCase().contains("sort")

现在,如果我理解正确,您希望在不满足上述条件的情况下继续寻找命令。

while( !(command.toLowerCase().contains("filter") || command.toLowerCase().contains("sort")) )

上述条件说“虽然NOT(过滤或排序)保持循环”