Java 只要用户输入不为';t等于某些单词不起作用?
我不明白这为什么不起作用。无论我输入什么,即使是一个有效的动作词,程序都会重新编译我Java 只要用户输入不为';t等于某些单词不起作用?,java,netbeans,Java,Netbeans,我不明白这为什么不起作用。无论我输入什么,即使是一个有效的动作词,程序都会重新编译我 String action = ""; do { System.out.print("Enter what you want to do (ADD, REMOVE, " + "LIST, SAVE, SORT): "); action = keyboard.next(); } while ((!(action.
String action = "";
do {
System.out.print("Enter what you want to do (ADD, REMOVE, "
+ "LIST, SAVE, SORT): ");
action = keyboard.next();
} while ((!(action.equalsIgnoreCase("ADD"))
|| !(action.equalsIgnoreCase("REMOVE"))
|| !(action.equalsIgnoreCase("LIST"))
|| !(action.equalsIgnoreCase("SAVE"))
|| !(action.equalsIgnoreCase("SORT"))));
对。你用了or,但你想要和
((!(action.equalsIgnoreCase("ADD"))
&& !(action.equalsIgnoreCase("REMOVE"))
&& !(action.equalsIgnoreCase("LIST"))
&& !(action.equalsIgnoreCase("SAVE"))
&& !(action.equalsIgnoreCase("SORT"))));
每个单词都将满足测试,不添加或不删除。你可以这样申请
您的组合
while
条件始终为true
。如果!(action.equalsIgnoreCase(“ADD”)
为false
,则action
字符串必须为“ADD”
。因此所有其他条件将为true
。因此整个条件为true
将您的|
替换为&&
或者,将您的单词放入列表
或其他容器中并进行测试
while (!words.contains(action))
您的条件是错误的。如果
action
不等于任何有效操作词,您应该终止循环,但只要action
不等于至少一个有效操作,您的条件就会继续循环,这始终是真的(因为valid一次最多只能等于一个有效操作)
正确的条件应为:
} while ((!(action.equalsIgnoreCase("ADD"))
&& !(action.equalsIgnoreCase("REMOVE"))
&& !(action.equalsIgnoreCase("LIST"))
&& !(action.equalsIgnoreCase("SAVE"))
&& !(action.equalsIgnoreCase("SORT"))));
试试这个
String action = "";
do {
System.out.print("Enter what you want to do (ADD, REMOVE, "
+ "LIST, SAVE, SORT): ");
action = keyboard.next();
} while (!((action.equalsIgnoreCase("ADD"))
|| (action.equalsIgnoreCase("REMOVE"))
|| (action.equalsIgnoreCase("LIST"))
|| (action.equalsIgnoreCase("SAVE"))
|| (action.equalsIgnoreCase("SORT"))));
De Morgan看到你的情况会很难过:这已经被问了很多次了。我会努力找到重复的,但认真地说,人们,提供更多相同的答案是浪费每个人的时间。@DavidWallace你怎么看?是的,@Pshemo,我以前没见过。这不是我想要的,但我知道喜欢Oded的答案。这是我的答案之一,但我不想在上面使用dup hammer,因为我更愿意找到更好的方法。@MinaHan这些条件相互排斥,因此默认情况下只能满足其中一个。@MinaHan循环(在我建议的修复之后)只要动作不等于所有动作,它就会继续,这意味着当动作等于其中一个动作时,它就会退出。
String action = "";
do {
System.out.print("Enter what you want to do (ADD, REMOVE, "
+ "LIST, SAVE, SORT): ");
action = keyboard.next();
} while (!((action.equalsIgnoreCase("ADD"))
|| (action.equalsIgnoreCase("REMOVE"))
|| (action.equalsIgnoreCase("LIST"))
|| (action.equalsIgnoreCase("SAVE"))
|| (action.equalsIgnoreCase("SORT"))));