while((!(command.toLowerCase().contains("filter")==true) ||
!(command.toLowerCase().contains("sort")==true))){
System.out.println("Input is invalid. Please try again.");
command = range.nextLine();
}
答案 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(过滤或排序)保持循环”