Java While循环检查字符输入
我试图接受用户以字符形式输入的内容。我有工作,但我需要检查并确保它是6个字符(H,H,S,S,L,L)之一。我有一个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
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')