繁体   English   中英

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

[英]why the next statement after the while loop doesn't get executed

我应该得到用户 util 输入的整数的乘积,输入小于 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); 
} 

首先,您的测试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);

在您的代码中, while循环将永远运行。 所以这就是为什么它不打印任何东西。

试试这个:

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

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

你可以尝试这样的事情:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM