我正在尝试验证用户输入。我尝试了一些if语句和尝试布尔值。我无法得到任何东西给出输出或者更确切地说我想要的验证
要求用户在“红色”或“蓝色”之间进行选择我希望他们要求输入“红色”或“蓝色”。我知道这可以通过按钮更容易解决,但我正在尝试使用字符串输入。下面的代码举例说明了我的位置。
custColorMsg = "Which color do you want your shirt to be red or blue?";
customerColor = getstringInput(custColorMsg);
String color = null
if( customerColor.equalsIgnoreCase("yes")) {
color = true}
if( customerColor.equalsIgnoreCase("no")) {
color = true}
else if(!customerColor.equalsIgnoreCase("yes" || "no") {
color = false}
我知道这最后一部分是错的我只是不确定如何修复它。客户将有三次机会输入有效的响应然后程序将终止,这部分我可以处理。如果我能弄清楚如何接受“是”或“否”并拒绝其他任何事情。
答案 0 :(得分:1)
就这个程序的设计而言,我建议添加一个for循环,从0到2(这将迭代3次)。在循环内,程序可以确定用户的输入是什么。我还建议查看下面for循环的语法,我使用ifs,否则使用ifs和elses来更有效地评估数据集。
该计划的实施可以是:
for(int i = 0; i < 3; i++)
{
customerColor = getstringInput(custColorMsg);
String color = null
if( customerColor.equalsIgnoreCase("yes")) {
color = true;
break;
}
else if( customerColor.equalsIgnoreCase("no")) {
color = true;
break;
}
else{
color = false;
}
custColorMsg = "Invalid Input, Please Input Again";
}
这将给用户3次输入数据,如果他们输入正确,它将停止询问,但是,如果他们不这样做,它将再次询问,直到他们用完了。
答案 1 :(得分:1)
您的方法存在一些问题。
您的变量名称的语义略有不同。这使得代码难以阅读。例如,您在此处定义为color
但始终用作String
的变量Boolean
有点令人困惑。我猜你的意思是将它定义为Boolean
类型,并打算将它用作循环中的破坏条件 - 将它命名为isValidColor
或沿着这些行的某些内容会更有意义。
以下行不符合您的想法:
customerColor.equalsIgnoreCase("yes" || "no")
方法equalsIgnoreCase()
接收String
而不是Boolean
,就像您的代码中的这一行将有一个参数。由于||
将解析为Boolean
true
或false
的{{1}}值。此外,那些是该运算符的错误操作数类型,代码将无法编译。
对于您的控制结构,您可以使用while
循环,当您达到最大尝试次数或输入有效回复时,该循环将退出。
这是您正在尝试完成的工作控制台版本:
String custColorMsg = "Which color do you want your shirt to be red or blue?";
String customerColor;
Boolean validInput = false;
Scanner in = new Scanner(System.in);
int tries = 0;
while (tries < 3 && !validInput)
{
System.out.println(custColorMsg);
customerColor = in.nextLine();
if( customerColor.equalsIgnoreCase("red")) {
validInput = true;
}
else if( customerColor.equalsIgnoreCase("blue")) {
validInput = true;
}
tries++;
}