簡體   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