【问题标题】:why the next statement after the while loop doesn't get executed为什么while循环之后的下一条语句没有被执行
【发布时间】:2017-02-08 03:16:07
【问题描述】:

我应该得到用户 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); 
} 

【问题讨论】:

  • 你能分享你的代码吗?
  • public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入整数:");整数 = 1;整数乘积 = 1; while(input.hasNextInt() && num>=0){ num = input.nextInt();产品=产品*数量; } System.out.print("产品:"+产品); }
  • 嗨内特。正如 Amer 所说,请以文本形式分享您的代码。我建议您查看stackoverflow.com/help/how-to-ask 以帮助您入门。格式正确的问题会得到更快的回答。
  • 我编辑了我的问题,所以你们可以看到代码

标签: 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(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);
}

【讨论】:

  • 1) 没有解释的代码不太有用。 2) 一般最好使用hasNextInt(),而不是使用异常。见Defensive Programming vs Exception Handling?
  • @Andreas 这是你的意见。另外,如果他们需要解释,他们可以问,我会解释的。
  • @Andreas 也可以链接到 python 问题...这是 java
  • StackOverflow 的目的是为公众提供问题答案的存储库。您的答案不仅适用于提出问题的人,而且适用于将来在搜索类似问题时会发现问题的每个人。请在回答问题时考虑到这一点。
  • @Andreas 有多个答案和其他类似的问题。如果他们在我的回答中找不到他们想要的东西,我相信还有很多选择。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    试试这个:

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

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

    【讨论】:

    • 我已经尝试过你所说的,但这不是我需要的。这就是我需要的:例如,我输入 2,3 和 -2,我希望程序为产品打印 6。
    猜你喜欢
    • 1970-01-01
    • 2019-07-07
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多