我是java的新手,我正在尝试制作一个接收角色的程序 键盘直到字符为s或n,然后在屏幕上打印。
我写了这段代码,但我无法理解为什么程序一直要求我插入一个字符,即使它是s或n。
import java.util.Scanner;
public class prep4{
public static void main(String[] args){
char c;
Scanner kb = new Scanner(System.in);
do{
System.out.println("Type in a character");
c = kb.next().charAt(0);
} while(c != 's' || c != 'S' || c != 'n' || c != 'N');
System.out.println(c);
}
}
如果键入,我无法弄清楚如何结束do-while循环来打印s或n。 有人能帮助我吗?
答案 0 :(得分:9)
它应该与&&因为它总是不等于其中之一。
while(c != 's' && c != 'S' && c != 'n' && c != 'N')
答案 1 :(得分:1)
尝试
do{
System.out.println("Type in a character");
c = kb.next().charAt(0);
} while(c != 's' && c != 'S' && c != 'n' && c != 'N');
您应该参考De morgan's laws:
(不是)OR(不是b)⟷不是(a AND b)
将此规则应用于您的情况,它将等同于:
while((c != 's') && (c != 'S') && (c != 'n') && (c != 'N'))