Java 在带有验证的while循环中输入字符

Java 在带有验证的while循环中输入字符,java,Java,在这里,我想要一个来自键盘的输入字符值,它将只是while循环中(+-*/)的符号。如果符号不匹配,while循环将运行 此处,while循环正在工作,但未检查字符。所以,当循环持续工作时- System.out.print("Enter the operator (+ - X /): "); operator = input.next(); char c=operator.charAt(0); while (c != '+' && c != '-' && c !

在这里,我想要一个来自键盘的输入字符值,它将只是
while
循环中(+-*/)的符号。如果符号不匹配,while循环将运行

此处,
while
循环正在工作,但未检查字符。所以,当循环持续工作时-

System.out.print("Enter the operator (+ - X /): ");
operator = input.next();
char c=operator.charAt(0);
while (c != '+' && c != '-' && c != '*' && c != '/'){
    System.out.println("Operator doesn't match. Try again.");
    System.out.print("Enter the operator (+ - X /): ");
    input.next().charAt(0);
}

在while循环的最后一行中,您正在检索用户输入,但没有将其存储在任何位置。你应该这样做:

System.out.println("Operator doesn't match. Try again.");
System.out.print("Enter the operator (+ - X /): ");
如果您想做一些有趣的事情,您也可以尝试使用,如下所示:

c = input.next().charAt(0);

更改“input.next().charAt(0);”while循环中指向“c=input.next().charAt(0);”的行它解决了你的问题。当前c值在内部没有变化,这是真的!谢谢你指出,我已经改正了。我一定是太累了,该睡觉了,哈哈
char c;
do {
    System.out.println("Enter a operator (+ - * /):");
    c = input.next().charAt(0);
} while(c != '+' && c != '-' && c != '*' && c != '/');