Conditional statements 使用扫描仪检查条件循环
我试图写一个代码,将循环你,如果你提供错误的数据。问题是,我需要为这两种情况提供某种类型的错误数据消息: -输入的不是整数值 -输入0以下的值 在这段代码中,如果您键入一个字母,它会向您循环一条消息:坏数据,但如果您键入例如-10之类的负值,即使验证有效,并且您需要将数字更正为正数,也不会出现坏数据 如何使其更通用,以便在这两种情况下都能打印出屏幕上的坏数据Conditional statements 使用扫描仪检查条件循环,conditional-statements,java.util.scanner,Conditional Statements,Java.util.scanner,我试图写一个代码,将循环你,如果你提供错误的数据。问题是,我需要为这两种情况提供某种类型的错误数据消息: -输入的不是整数值 -输入0以下的值 在这段代码中,如果您键入一个字母,它会向您循环一条消息:坏数据,但如果您键入例如-10之类的负值,即使验证有效,并且您需要将数字更正为正数,也不会出现坏数据 如何使其更通用,以便在这两种情况下都能打印出屏幕上的坏数据 Random rand = new Random(); int los = rand.nextInt(11); i
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数字必须大于零这意味着我第一次键入负数时,它打印出来:数字必须大于零,第二次输入负值时,我需要执行两次才能看到提示消息抱歉,检查我编辑的代码-现在我正在喝我的第一杯咖啡-这一次确实有效:在检查扫描仪的下一个值是否为整数后,我们将其分配给变量,然后我们对该变量进行验证,并在需要时显示消息。干净,简单,让我们工作。