Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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 while循环错误打印用户输入需要按enter键两次_Java_While Loop_Java.util.scanner - Fatal编程技术网

Java while循环错误打印用户输入需要按enter键两次

Java while循环错误打印用户输入需要按enter键两次,java,while-loop,java.util.scanner,Java,While Loop,Java.util.scanner,我试图打印出用户输入的无效输入,但如果他们第二次输入包含空格的长文本,我就会遇到问题。。。。。在打印错误消息之前,需要按两次enter键。下面是我为它做的代码,你知道如何修复它吗 private Scanner input; input = new Scanner(System.in); while (!input.hasNextInt()) { System.out.println("[ERROR] Invalid entry!" + input.nextLine(

我试图打印出用户输入的无效输入,但如果他们第二次输入包含空格的长文本,我就会遇到问题。。。。。在打印错误消息之前,需要按两次enter键。下面是我为它做的代码,你知道如何修复它吗

private Scanner input;
input = new Scanner(System.in);
while (!input.hasNextInt()) {
    System.out.println("[ERROR] Invalid entry!" + input.nextLine() 
        + "\n Please enter a valid Menu Option number ");
    input.nextLine();
}

while循环中有两个
input.nextLine()
;一个在print语句中,一个在print方法之后,这就是为什么需要按enter键两次。尝试使用以下代码:

    Scanner input;
    input = new Scanner(System.in);
    while (!input.hasNextInt()) {
        String s = input.nextLine();
        System.out.println("[ERROR] Invalid entry!"  + s + "\n Please enter a valid Menu Option number ");
    }

不要在print语句中使用
input.nextLine()
,只需获取一次输入并将其存储以供使用。

尝试将while循环更改为if语句,如下所示:

Scanner input;
input = new Scanner(System.in);
if (!input.hasNextInt()) {
    String myString = input.nextLine();
    System.out.println("[ERROR] Invalid entry!"  + myString + "\n Please enter a valid Menu Option number ");
}
您不需要每次都检查输入是否有整数值,因为if语句只会在用户输入输入时检查条件