WHILE循环中的多个条件

5

我想在用户输入“N”或“n”时退出while循环。但是它不起作用。它可以正常工作一个条件,但不能同时满足两个条件。

import java.util.Scanner;

class Realtor {

    public static void main (String args[]){

        Scanner sc = new Scanner(System.in);

        char myChar = 'i';

        while(myChar != 'n' || myChar != 'N'){

           System.out.println("Do you want see houses today?");
           String input = sc.next();
           myChar = input.charAt(0); 
           System.out.println("You entered "+myChar);
        }
    }
}
3个回答

24
你需要将||更改为&&,以便两个条件都必须为真才能进入循环。
while(myChar != 'n' && myChar != 'N')

3
你还应该将其更改为do-while循环,这样你就不必随机初始化myChar。 - LINEMAN78
是的,肯定应该使用 do-while 循环。 - Nick Rolando
4
你也可以使用Character.toLowerCase(myChar) != 'n'来提高可读性。 - LINEMAN78
这解决了我的问题。然而,“&&”表示“和”。这意味着两个条件都必须为真。我是一个PL-SQL开发人员,我发现很难理解这个概念。 - user547453
1
如果您使用 ||,则只需要一个条件为真即可进入循环。如果 myChar = 'n',那么 myChar != 'n' 为假,但是 myChar != 'N' 为真,因此它会进入循环。由于第一个条件为假,所以使用 && 将不会进入循环。 - Nick Rolando

1
你的条件是错误的。 myChar != 'n' || myChar != 'N' 将永远为真。
改用 myChar != 'n' && myChar != 'N'

0
如果您的代码中,当用户输入“X”(例如)时,在while条件评估到达时,它将确定“X”与“n”不同(nChar != 'n'),这将使您的循环条件为真并执行循环内部的代码。第二个条件甚至不会被评估。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接