我试图提示用户提供三个字符串中的一个:“阿姆斯特丹”、“列克星敦”和“麦迪逊”。如果用户没有输入其中一个字符串,则应该反复提示它们,直到它们输入为止。
当我输入一个应该是可以接受的字符串时,比如“列克星敦”,我仍然会收到“请输入一个有效的城市”。
有人能告诉我when循环是如何运行的吗?即使当我否定其中的条件时也是这样吗?
public String readCity() {
String x = keyboard.next();
while (!x.equals("Amsterdam") || !x.equals("Lexington") || !x.equals("Madison")) {
System.out.println("Please enter a valid city.");
x = keyboard.next();
}
return x;
}发布于 2015-02-03 20:46:49
请参阅De-Morgan's laws
(NOT a) OR (NOT b)实际上是
NOT (a AND b)您需要使用&&而不是||。
发布于 2015-02-03 20:48:21
您应该使用AND而不是OR,如下所示:
String x = keyboard.next();
while (!x.equals("Amsterdam") && !x.equals("Lexington") && !x.equals("Madison")) {
System.out.println("Please enter a valid city.");
x = keyboard.next();
}发布于 2015-02-03 20:51:51
如果您使用Java 7或更高版本,我希望使用以下代码:
public String readCity() {
while (true) {
String x = keyboard.next();
switch(x) {
case "Amsterdam":
case "Lexington":
case "Madison":
return x;
default:
System.out.println("Please enter a valid city.");
}
}
}https://stackoverflow.com/questions/28308385
复制相似问题