Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.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 - Fatal编程技术网

Java 当用户输入字符串时,程序返回到循环的开始,当整数程序继续

Java 当用户输入字符串时,程序返回到循环的开始,当整数程序继续,java,Java,下面你可以看到我遇到麻烦的代码部分。到目前为止,当用户输入一个错误时,程序返回一个错误。我希望程序返回错误的条目,请重试!然后回到起点 do{ System.out.println("Vnesi dožino besede, ki jo iščeš"); Scanner in = new Scanner(System.in); dolzina = in.nextInt(); }while (dolzina<0); 这将捕获扫描器在期望int并获取其

下面你可以看到我遇到麻烦的代码部分。到目前为止,当用户输入一个错误时,程序返回一个错误。我希望程序返回错误的条目,请重试!然后回到起点

do{
    System.out.println("Vnesi dožino besede, ki jo iščeš");
    Scanner in = new Scanner(System.in);
    dolzina = in.nextInt();
        }while (dolzina<0);
这将捕获扫描器在期望int并获取其他内容时抛出的异常。当这种情况发生时,它将在dolzina中放入一个负数,根据循环条件,它将重新执行循环


扫描仪应该在环路外打开。

如果我理解您的意思,您可以在尝试阅读之前检查扫描仪是否正确。而且,您应该声明扫描仪一次。大概

int dolzina = -1;
Scanner in = new Scanner(System.in);
do {
    System.out.println("Vnesi dožino besede, ki jo iščeš");
    if (in.hasNextInt()) {
        dolzina = in.nextInt();
    } else if (in.hasNextLine()) {
        System.out.printf("Wrong entry (%s) try again!%n",
                in.nextLine());
    } else {
        System.out.println("No Entry!");
        System.exit(1);
    }
} while (dolzina < 0);

尝试检查int是否与in.hasNextInt一起传递

    if (in.hasNextInt()) {
        dolzina = in.nextInt();
    }

对于dolzina的值,您希望重复循环。你犯了什么错误。在致电nextInt之前,请更清楚地使用hasNextInt;
    if (in.hasNextInt()) {
        dolzina = in.nextInt();
    }