当前位置: 首页 > 知识库问答 >
问题:

如何在while循环中安全地扫描一个整数?[重复]

贲铭
2023-03-14

我想扫描一个整数,并把它放在一个while循环,以便如果输入了一个无效的条目,程序将要求输入另一个整数,但当我运行它时,它不允许我输入和新的整数,只是多次打印无效条目。

do {
    System.out.println("Maximum number of Students:");
    if(input.hasNextInt()) {
        maxstudents = input.nextInt();
        if (maxstudents > 0) {
            break;
        }
    } else {
        System.out.println("Invalid entry");
    }
} while(true);

共有3个答案

燕野
2023-03-14
do {
        System.out.println("Maximum number of Students:");
            if(input.hasNextInt()) {
                maxstudents = input.nextInt();
                    if (maxstudents > 0) {
                        break;
                    }
            }
            else {
                System.out.println("Invalid entry:"+scanner.next());
            }
    }while(true);
阚英武
2023-03-14

@Nicholas K是对的。但是我为您提供另一个针对负整数情况的警告消息,并将此代码移动到单独的方法中。

public static int getMaxStudents(Scanner scan) {
    do {
        System.out.print("Maximum number of Students: ");

        if (scan.hasNextInt()) {
            int maxStudents = scan.nextInt();

            if (maxStudents > 0)
                return maxStudents;
        }

        System.out.println("Enter a valid positive integer number");
        scan.nextLine();    // <-- this is mandatory
    } while (true);
}
臧弘和
2023-03-14

将else更改为:

  else {
    System.out.println("Invalid entry");
    input.nextLine();
  }

因此,在无效输入时,您需要将光标移动到下一行,以便可以再次接受输入。

 类似资料:
  • 我试图扫描一个整数,并运行一个循环来扫描字符串,直到那个整数。但这段代码跳过了第一个字符串... 有解决办法吗?

  • 我需要创建一个简单的游戏,其中创建了一个随机数,用户必须猜测数字输入到扫描仪。如果他们的猜测太高,系统会告诉他们猜测得更低,如果猜测得太低也是一样。 我正在使用while循环,但我不知道如何连续调用扫描器,以便用户可以不断猜测。以下是我到目前为止的代码:

  • 这是我目前所掌握的:

  • 我开发了一个字符排序器,我想每次字符串排序后提示用户输入一个新的字符串。我遇到的问题是扫描仪一直在扫描用户的第一个输入。如果我使用scanner.next(),它不会计算输入末尾的空白,这不是解决方案。 这是while循环的开始。一旦代码完成,它将再次从“inputtext”开始。

  • 正如这里看到的,有两种方法可以重复某事很多次。但是它似乎对我不起作用,所以我想知道是否有人能帮忙。 基本上,我想重复以下3次 根据链接所说,这就是我所做的, 但这似乎行不通。while循环只重复一次,而不是三次。有人能帮我解决这个问题吗?

  • 我想在while循环中使用单个扫描仪输入作为多个条件,其中可以检查输入是否正确,如果不正确,则重新输入输入值。 是否有一种方法来存储第一个输入并一次又一次地重用它,或者是否有一个更好的解决方案来解决我的问题?