1

您好,我是一个开始编程的学生,我正在练习使用循环来验证输入。不幸的是,循环工作但完全跳过了内部循环......我现在收到错误消息或提示......

这是我的代码:[我从本网站上关于验证输入的答案中借用了它,因此我可以对其进行测试。]

import java.util.Scanner;

public class ValidationTest
{
public static void main(String[] args)
{
    Scanner sc = new Scanner(System.in);
    int number;
    do {
        System.out.println("Please enter a positive number!");
        while (!sc.hasNextInt()) 
        {
            System.out.println("That's not a number!");
            sc.next(); // this is important!
        }  
        number = sc.nextInt();
       } while (number <= 0);
    System.out.println("Thank you! Got " + number);
}
}
4

3 回答 3

0

如果第一次执行循环时while条件(在括号后while)为假,则循环将被跳过while

您可以使用调试器单步执行代码以查看发生了什么。

如果您不知道如何使用调试器,请停止您正在做的所有事情并进行一些 Google 搜索或任何您需要做的事情来了解如何使用调试器。

于 2012-10-13T01:45:35.570 回答
0

您的 int 编号是 NaN (不是数字)。尝试将其设置为-1,这样您就可以进入第一个循环。在第二个循环中, sc 从未扫描输入,它只是被初始化。

于 2012-10-13T01:47:58.357 回答
0

内循环:

 while (!sc.hasNextInt()) 
    {
        System.out.println("That's not a number!");
        sc.next(); // this is important!
    }  
    number = sc.nextInt();

只检查你输入的不是数字,如果你输入-123,这个函数!sc.hasNextInt()是假的,所以它会跳过循环,如果你想检查数字是否为负,在分配数字值之后添加这个检查:

 if(number <= 0 ){
     System.out.println("The number is negative!");
 }

您不必再创建一个循环来检查数字是否为负,因为第一个循环有它,并且do...while循环将确保您必须至少运行一次循环

于 2012-10-13T01:56:07.970 回答