这是代码;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Do you need instructions for this game? Y/N.");
char a = input.next().charAt(0);
// This while loop always comes out as true.
while (a != 'y' || a != 'n') {
System.out.println("Please enter either Y/N. ");
System.exit(0);
}
if (a == 'y') {
System.out.println("This game is called heads and tails.");
System.out.println("You must type h (heads), or t (tails).");
System.out.println("You will need to keep guessing correctly, each correct guess will increase your score.");
}
}
}
有没有解释为什么它总是如此真实,是否有另一种方法可以做到这一点?我想要进行验证检查,如果用户输入除y或n以外的任何内容,程序将关闭。
问题是,当我输入字符y或n时,即使我使用!=(非等于)运算符,它仍然会关闭。
答案 0 :(得分:4)
(a != 'y' || a != 'n')
至少有一个子条件必须为真。
考虑三种可能的情况:
a is 'y': false || true gives true
a is 'n': true || false gives true
a is something else: true || true gives true
答案 1 :(得分:4)
如果您有a==y
,则a != 'n'
为真,a != 'y' || a != 'n'
为真。
如果您有a==n
,那么a != 'y'
为真,a != 'y' || a != 'n'
为真。
如果您有a == other thing
,则a != 'y' || a != 'n'
为真。
OR操作每次都是如此。需要使用AND。
答案 2 :(得分:3)
字符a
不能同时为y
和n
,因此会为任何输入执行while
循环。
此外,循环不循环。
答案 3 :(得分:3)
您正在检查a是否不等于' y'或者a不等于' n' 这总是如此。
将其更改为while ((a != 'y') && (a != 'n'))
。
答案 4 :(得分:1)
while
内的条件
while (a != 'y' || a != 'n')
总是如此,因为
如果a
等于y
,则a
显然不等于n
。所以,结果是真的。
同样,如果a
等于n
,那么a
显然不等于y
。所以,结果是真的。
同样,如果a
不等于y
或n
,那么结果也是如此。
因此,while
内的条件始终为真。因此,执行进入while
循环,打印完消息后即退出。
因此,使用AND
代替OR
可以解决您的问题,例如
while(a != 'y' && a !='n') {
//your work
}
我认为你愿意这样做,如下,
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Do you need instructions for this game? Y/N: ");
char a = input.next().charAt(0);
while (a != 'y') {
if(a =='n') {
System.exit(0);
}
else{
System.out.println("Please enter either Y/N : ");
a = input.next().charAt(0);
}
}
if (a == 'y') {
System.out.println("This game is called heads and tails.");
System.out.println("You must type h (heads), or t (tails).");
System.out.println("You will need to keep guessing correctly, each correct guess will increase your score.");
}
}
}
答案 5 :(得分:0)
你的逻辑应该是" a不是y而a不是n"
while (a != 'y' && a != 'n')