Java While循环检查字符输入

Java While循环检查字符输入,java,string,loops,while-loop,character,Java,String,Loops,While Loop,Character,我试图接受用户以字符形式输入的内容。我有工作,但我需要检查并确保它是6个字符(H,H,S,S,L,L)之一。我有一个while循环,但只要向其中添加多个字符语句,循环就会为每个应该正确的值提供错误 以下是函数: private static char getHighLow(Scanner keyboard) { System.out.println("High, Low, or Sevens (H/L/S): "); String choiceString = keyb

我试图接受用户以字符形式输入的内容。我有工作,但我需要检查并确保它是6个字符(H,H,S,S,L,L)之一。我有一个while循环,但只要向其中添加多个字符语句,循环就会为每个应该正确的值提供错误

以下是函数:

    private static char getHighLow(Scanner keyboard) 
{
    System.out.println("High, Low, or Sevens (H/L/S): ");
    String choiceString = keyboard.next();

    char choice = choiceString.charAt(0);

    while (choice != 'H' || choice != 'h' || choice != 'L' || choice != 'l' || choice != 'S' || choice != 's')
    {
        System.out.println("You have entered an invalid entry.");
        System.out.println("High, Low, or Sevens (H/L/S): ");
        choiceString = keyboard.next();
    }

    return choice;

}

继续检查多个字符的最佳方法是什么?

使用
&
而不是
|

while (choice != 'H' && choice != 'h' && choice != 'L' && choice != 'l' && choice != 'S' && choice != 's')
这可以通过先转换为小写来简化

choice = Character.toLowerCase(choice);

while (choice != 'h' && choice != 'l' && choice != 's')

您的逻辑中有一个错误:您应该将这些测试与和连接起来:
&&

while (choice != 'H' && choice != 'h' && choice != 'L' && ...
此外,
choice
在循环体中永远不会更新,因此它永远不会更改。复制
choice=choiceString.charAt(0)在循环中重新读取
选择字符串后


从概念上讲,只要字符不是H、不是L、不是S,您就需要不断请求输入。

您永远不会在
循环中更新
选项

只需在循环末尾添加以下行:

choice = choiceString.charAt(0);

此外,您应该检查
&&
而不是
|

完美的解决方案。我想我现在明白了这个道理,但如果我错了,请纠正我。我不想进入这个循环,除非没有输入这些字符。所以它检查每个字符并失败,因为每一个字符都必须是真的?完美的。谢谢你的帮助!
while (choice != 'H' && choice != 'h' && choice != 'L' && choice != 'l' && choice != 'S' && choice != 's')