为什么while循环之后的下一个语句没有被执行

时间:2016-09-29 17:16:05

标签: java while-loop

我应该得到用户输入的整数的乘积,输入的数字小于1,然后打印产品。但是当我输入数字后程序什么都不做的时候。我该如何解决这个问题。

以下是代码:

  public static void main(String[] args) {
    Scanner input = new Scanner(System.in); 
    System.out.println("Enter integers: "); 
    int num = 1; 
    int product = 1; 
    while(input.hasNextInt() && num>=0){ 
       num = input.nextInt(); product = product*num; 
     } 
    System.out.print("Product: "+product); 
} 

3 个答案:

答案 0 :(得分:1)

首先,您的测试num>=0不是在“输入小于1的数字”时结束循环的测试,因为0小于1但不会结束循环

其次,num的测试在 num应用于product后完成。你不希望这样。

因此,您需要在获取之后测试num ,但之前将其应用于product。如果小于1,则希望结束循环,您可以使用break语句来完成。

此外,将多个语句放在一行上通常是不好的方式。

System.out.println("Enter integers:");
int product = 1;
while (input.hasNextInt()) {
    int num = input.nextInt();
    if (num < 1)
        break;
    product *= num;
}
System.out.println("Product: " + product);

答案 1 :(得分:0)

在您的代码中,while循环会一直运行。这就是为什么它不打印任何东西。

请改为尝试:

 while(input.hasNextInt() && num>=0){ 
   num = input.nextInt(); 
   product = product*num; 
   System.out.print("Product: "+product); 
 } 

编辑:尝试输入小于0的数字,然后您的while循环应终止。

答案 2 :(得分:0)

您可以尝试这样的事情:

public static void main(String[] args)
{
    Scanner input = new Scanner(System.in); 
    System.out.println("Enter integers: "); 
    int num = 1; 
    int product = 1;
    while(true)
    {
        try
        {
            num = input.nextInt();
            if(num < 0)
            {
                break;
            }
            product = product * num;
        } catch(InputMismatchException e)
        {
            System.out.println("Please enter a number.");
            input.nextLine();
        }
    }
    System.out.print("Product: "+product);
}