为什么java程序会跳过我的内循环?

时间:2012-10-13 01:42:54

标签: while-loop nested-loops do-while

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

以下是我的代码:[我在本网站上的答案中为我们提供了关于验证输入的答案,因此我可以对其进行测试。]

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);
}
}

3 个答案:

答案 0 :(得分:0)

如果首次执行while循环时条件(在while之后的括号中)为false,则会跳过while循环。

您可以使用调试器逐步执行代码以查看正在进行的操作。

如果您不知道如何使用调试器,请停止您正在执行的所有操作,并执行一些Google搜索或任何您需要执行的操作以了解如何使用调试器。

答案 1 :(得分:0)

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

答案 2 :(得分: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循环将确保你必须至少运行一次循环