Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_While Loop_Java.util.scanner - Fatal编程技术网

Java,使用相同的输入循环两次

Java,使用相同的输入循环两次,java,loops,while-loop,java.util.scanner,Java,Loops,While Loop,Java.util.scanner,我的Java代码片段有一个小问题。我想取一个double或int并打印一条错误消息,然后用任何其他输入重新启动。现在,我对Java相当陌生,所以这可能不是实现这一点的最有效的方法,但是您能做些什么呢 在任何情况下,我遇到的问题是,如果我输入了无效的输入,它会在接受新输入之前打印两次错误消息。我只想使用sc.next(),但如果用户输入带有空格的字符串,我不想接受另一个无效输入 它有明显的评论,因为这是我的教授想要的,所以我做了 以下是我的代码片段: System.out.println("Ent

我的Java代码片段有一个小问题。我想取一个double或int并打印一条错误消息,然后用任何其他输入重新启动。现在,我对Java相当陌生,所以这可能不是实现这一点的最有效的方法,但是您能做些什么呢

在任何情况下,我遇到的问题是,如果我输入了无效的输入,它会在接受新输入之前打印两次错误消息。我只想使用
sc.next()
,但如果用户输入带有空格的字符串,我不想接受另一个无效输入

它有明显的评论,因为这是我的教授想要的,所以我做了

以下是我的代码片段:

System.out.println("Enter hours worked: ");
                    while(hourFinisher == false)
                    {
                        //avoids type mismatch by allowing double or int to be entered
                        if(sc.hasNextDouble())
                        {
                            hours = sc.nextDouble();
                            isDouble = true;
                            hourFinisher = true;
                        }
                        else if(sc.hasNextInt())
                        {
                            intHours = sc.nextInt();
                            isDouble = false;
                            hourFinisher = true;
                        }
                        //in the case of a non-double or int, prints an error message and accepts a new input
                        else
                        {
                            System.out.println("Invalid Input! Please enter valid input.");
                            sc.nextLine();
                        }
需要明确的是,当我输入时,例如
'a'
,得到的是
无效输入!请输入有效的输入。
两次

我不想把它打印两次;这是多余的。任何指点都很感激

谢谢

使用
sc.nextLine()在其他输入之后(即
nextInt()
nextDouble()
。这些输入之后不会自动进行输入。

可能重复的