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

时间:2014-10-28 20:32:07

标签: java

Bellow你可以看到我遇到问题的部分代码。到目前为止,当用户输入" a"程序返回错误。我希望程序返回"错误的条目再次尝试!"然后回到起始状态。

do{
    System.out.println("Vnesi dožino besede, ki jo iščeš");
    Scanner in = new Scanner(System.in);
    dolzina = in.nextInt();
        }while (dolzina<0);

3 个答案:

答案 0 :(得分:0)

Scanner in = new Scanner(System.in);
do{
    System.out.println("Vnesi dožino besede, ki jo iščeš");
    try {
        dolzina = in.nextInt();
    } catch ( InputMismatchException e ) {
        dolzina = -1;
        System.err.println( "Wrong entry, try again" );
    }
} while (dolzina<0);

这将捕获扫描程序在需要int并获取其他内容时抛出的异常。当发生这种情况时,它会在dolzina中加上一个负数,根据你的循环条件,它将导致它重做循环。

扫描仪应在循环外打开

答案 1 :(得分:0)

如果我了解您,您可以在尝试阅读之前检查Scanner.hasNextInt()是否正确。而且,您应该声明Scanner一次。像,

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);

答案 2 :(得分:0)

尝试检查int是否通过in.hasNextInt()传递。

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