Java While循环中的字符串条件

时间:2015-02-03 20:44:27

标签: java

我试图提示用户给我三个字符串中的一个:"阿姆斯特丹," "列克星敦,"和#34;麦迪逊。"如果用户没有输入其中一个字符串,则应反复提示他们,直到他们这样做。

当我输入一个应该被接受的字符串时,例如" Lexington,"我仍然收到"请输入一个有效的城市。"

任何人都可以告诉我,即使在我否定其中的条件时,While循环是如何运行的?

    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;
    }

3 个答案:

答案 0 :(得分:8)

请参阅De-Morgan's laws

(NOT a) OR (NOT b)

实际上是

NOT (a AND b)

您需要&&而不是||

答案 1 :(得分:2)

您应该使用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();
}

答案 2 :(得分:0)

如果您使用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.");
         }
    }
}