0

我正在尝试以字符的形式接受用户的输入。我有这个工作,但我需要检查并确保它是 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;

}

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

4

3 回答 3

4

使用&&而不是||.

while (choice != 'H' && choice != 'h' && choice != 'L' && choice != 'l' && choice != 'S' && choice != 's')

这可以通过首先转换为小写来简化。

choice = Character.toLowerCase(choice);

while (choice != 'h' && choice != 'l' && choice != 's')
于 2012-10-15T15:05:26.873 回答
3

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

while (choice != 'H' && choice != 'h' && choice != 'L' && ...

此外choice,循环体内永远不会更新,因此它永远不会改变。在循环内choice = choiceString.charAt(0);重新阅读后复制。choiceString

从概念上讲,只要字符不是 H AND 不是 L AND 不是 S ,您就想继续要求输入。

于 2012-10-15T15:05:44.747 回答
2

您永远不会choicewhile循环中更新:

只需在循环末尾添加这一行:

choice = choiceString.charAt(0);

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

于 2012-10-15T15:05:49.270 回答