Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java do while支持多字符串验证_Java_String_Validation - Fatal编程技术网

Java do while支持多字符串验证

Java do while支持多字符串验证,java,string,validation,Java,String,Validation,尝试创建一个具有三个文本输入选项的简单程序。如果用户键入三个选项中的一个,程序将继续运行。如果用户键入其他内容,程序将返回并再次请求输入,直到给出正确的响应。 使用下拉列表或其他方法将不起作用,因为这是针对作业的 System.out.print("Enter one of the following: cheese, water, or burger: "); userMedium = user_input.nextLine( ); // store user input

尝试创建一个具有三个文本输入选项的简单程序。如果用户键入三个选项中的一个,程序将继续运行。如果用户键入其他内容,程序将返回并再次请求输入,直到给出正确的响应。 使用下拉列表或其他方法将不起作用,因为这是针对作业的

 System.out.print("Enter one of the following: cheese, water, or burger: ");
        userMedium = user_input.nextLine( );  // store user input as a string
        mediumConvert = userMedium.toLowerCase();

        boolean verifyName;
        if (mediumConvert.equals("cheese") || mediumConvert.equals("water") || mediumConvert.equals("burger")){
            verifyName = false;
        } else {
            verifyName = true;
        }

        while (verifyName = true){
            System.out.println("Please input a valid medium (cheese, water, or burger): ");
            userMedium = user_input.nextLine( );
            mediumConvert = userMedium.toLowerCase();
        }
这是我到目前为止设置的,但它只是不断重复循环。在本节之后,我想执行一个
开关
,以完成三个正确响应中的每一个

我在谷歌和YouTube上花了最后一个小时,但我发现的所有东西都使用整数。当用户输入只是一个数字和一个操作数时,验证用户输入似乎很容易。但是我如何使用三个可能的字符串

while (verifyName = true)
                  ↑
你在分配而不是比较。赋值表达式返回赋值,因此循环等价于:

while (true)
您应该将其更改为:

while (verifyName)
基本上,您应该编写
while(verifyName==true)
,但这是多余的,因为这就像问“verifyName的值为true是真的吗?”。它还可以防止潜在的错误,例如只插入一个而不是两个。

注意到两件事: 1)通过做

while(verify = true)
实际上,您正在将值
true
分配给
verifyName
。你需要使用

while(verifyName)
2.)在哪里重新分配
verifyName
的值? 您应该在while块内进行验证和重新分配


你也应该考虑更干净的替代解决方案,但是它可以等待另一天。

< p>你将永远不会在<代码> > <代码>循环,因为变量<代码> ViFiNeNe./COD>永远不会在循环内更新。这意味着您将永远不会执行循环,因为用户插入了您想要的输入,或者您将以无限循环结束

您还需要在循环内进行输入验证,并小心布尔验证。 比如:

while (verifyName) {
    System.out.println("Please input a valid medium (air, water, or steel): ");
    userMedium = user_input.nextLine( );
    mediumConvert = userMedium.toLowerCase();
    if (mediumConvert.equals("cheese") || mediumConvert.equals("water") || mediumConvert.equals("burger")){
        verifyName = false;
    } else {
        verifyName = true;
    }
}

令人惊叹的!这起作用了。我还必须在while语句中添加布尔更改代码,以摆脱循环。非常感谢@JasonGoss正确,这是另一个bug。我很高兴它对你有用!