如何编写一个接收一个字符的java程序,并一直要求插入它直到它是某个字符

时间:2015-01-08 17:18:58

标签: java

我是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。 有人能帮助我吗?

2 个答案:

答案 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'))