用扫描仪检查条件循环

checking condition loop with scanner

我正在尝试编写一个代码,在您提供错误数据的情况下让您循环。问题是我需要为这两种情况提供某种类型的 "Bad data" 消息: - 您输入的不是整数值 - 您输入的值低于 0

在此代码中,如果您键入一个字母,它会循环显示一条消息:"Bad data",但是如果您键入例如 -10 之类的负值,则不会出现错误数据(即使验证有效并且您需要将数字更正为正数)

我怎样才能做到更通用,所以在两种情况下系统输出都会在屏幕上打印错误数据

    Random rand = new Random();
    int los = rand.nextInt(11);
    int NumberOfPlayers ;

    Scanner scan7 = new Scanner(System.in);
    System.out.println(" Type number of players :");

    do {
        while (!scan7.hasNextInt()){
            System.out.println(" Bad data");
            scan7.next();
        }
        NumberOfPlayers = scan7.nextInt();
    }while (NumberOfPlayers < 0);

你只验证扫描仪是否有下一个整数,你不验证它的值,整数可以是负数。 试试这个解决方案:

    do {
        while (!scan7.hasNextInt()) {
            System.out.println(" Bad data");
            scan7.next();
        }
        NumberOfPlayers = scan7.nextInt();
        if (NumberOfPlayers <= 0) {
            System.out.println(" Number must be larger than zero");
        }
    } while (NumberOfPlayers <= 0);

检查下一个整数后,我添加了提供的整数的部分检查值。

另外请记住命名变量和 类 - 以小写字母开头,因此在您的情况下 NumberOfPlayers 应该是 numberOfPlayers。 为什么将扫描仪命名为 scan7?这个名字有正当理由吗?如果不是,您应该避免在名称中添加数字。