Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.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)_Java_Loops_Validation - Fatal编程技术网

验证后必须输入两次(Java)

验证后必须输入两次(Java),java,loops,validation,Java,Loops,Validation,当提示输入名称时,我尝试验证用户输入,以便只接受字母,但是,当我这样做时,我必须输入两次名称,直到它打印下一行 这是我的代码: System.out.println("Enter First Name"); queueArray[last].setfName(in.next().toUpperCase()); while(!in.next().matches("[a-zA-Z,]+")){ System.out.println("In

当提示输入名称时,我尝试验证用户输入,以便只接受字母,但是,当我这样做时,我必须输入两次名称,直到它打印下一行

这是我的代码:

System.out.println("Enter First Name");
        queueArray[last].setfName(in.next().toUpperCase());  

        while(!in.next().matches("[a-zA-Z,]+")){
            System.out.println("Invalid Input");
            System.out.printLn("Enter First Name");
            queueArray[last].setfName(in.next().toUpperCase()); 
        }
我不确定是哪部分代码导致了此问题。

可能的解决方案:

System.out.println("Enter First Name");
String input = in.next();
queueArray[last].setfName(input.toUpperCase());  

while(!input.matches("[a-zA-Z,]+")){
    System.out.println("Invalid Input");
    System.out.printLn("Enter First Name");
    queueArray[last].setfName(in.next().toUpperCase()); 
}

先将
放入.next()
变量中,然后再检查它是否匹配任何内容。更重要的是,学会在思想上(或在纸上)浏览代码,并在代码运行时可视化它正在做什么。这是一项必要的技能,如果要继续,您需要提高。您可以在
while
行中调用
next()
一次,然后在
setfName
行中再次调用。每次调用
next
都会得到新的输入。我建议您阅读@HovercraftFullOfEels谢谢您的建议,我会记住这一点。