使用扫描仪检查条件循环

问题描述 投票:0回答:1

我正在尝试编写代码,以防您提供错误的数据。问题是两种情况下我都需要某种类型的“错误数据”消息:-您输入的不是整数值-您输入的值低于0

在此代码中,如果您输入字母,则会向您循环显示一条消息:“错误数据”,但是如果您键入例如负值(如-10),则不会出现错误数据(即使验证有效并且您需要更正数字肯定)

我该如何使其更加通用,因此在两种情况下都将sysout与屏幕上打印的不良数据一起使用

    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);
conditional-statements java.util.scanner
1个回答
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);

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

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

© www.soinside.com 2019 - 2024. All rights reserved.