Conditional statements 使用扫描仪检查条件循环

Conditional statements 使用扫描仪检查条件循环,conditional-statements,java.util.scanner,Conditional Statements,Java.util.scanner,我试图写一个代码,将循环你,如果你提供错误的数据。问题是,我需要为这两种情况提供某种类型的错误数据消息: -输入的不是整数值 -输入0以下的值 在这段代码中,如果您键入一个字母,它会向您循环一条消息:坏数据,但如果您键入例如-10之类的负值,即使验证有效,并且您需要将数字更正为正数,也不会出现坏数据 如何使其更通用,以便在这两种情况下都能打印出屏幕上的坏数据 Random rand = new Random(); int los = rand.nextInt(11); i

我试图写一个代码,将循环你,如果你提供错误的数据。问题是,我需要为这两种情况提供某种类型的错误数据消息: -输入的不是整数值 -输入0以下的值

在这段代码中,如果您键入一个字母,它会向您循环一条消息:坏数据,但如果您键入例如-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);

您只验证扫描器是否有下一个int,而不验证它的值,整数可以是负数。 尝试以下解决方案:

    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);
在检查next int之后,我添加了所提供int的部分检查值

另外,请记住命名变量和类-以小写字母开始,因此在您的情况下NumberOfPlayer应该是NumberOfPlayer。
你为什么给scanner命名为scan7?这个名字有正当的理由吗?如果没有,您应该避免在名称中添加数字。

几乎可以,但我得到这样的结果:错误数据-14数字必须大于零-14-14数字必须大于零这意味着我第一次键入负数时,它打印出来:数字必须大于零,第二次输入负值时,我需要执行两次才能看到提示消息抱歉,检查我编辑的代码-现在我正在喝我的第一杯咖啡-这一次确实有效:在检查扫描仪的下一个值是否为整数后,我们将其分配给变量,然后我们对该变量进行验证,并在需要时显示消息。干净,简单,让我们工作。