2016-09-29 200 views
-5

我應該得到由用戶util輸入的整數的乘積,輸入小於1的數字並打印產品。但是當我輸入數字後程序什麼都不做。我怎樣才能解決這個問題。爲什麼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(input.hasNextInt() && num>=0){ 
     num = input.nextInt(); product = product*num; 
    } 
    System.out.print("Product: "+product); 
} 
+2

你可以分享你的代碼? –

+0

public static void main(String [] args){ \t \t Scanner input = new Scanner(System.in); \t \t System.out.println(「Enter integers:」); \t \t int num = 1; int product = 1; (input.hasNextInt()&& num> = 0){ \t \t \t num = input.nextInt(); \t \t \t product = product * num; \t \t \t \t } \t \t 是System.out.print \t( 「產品:」 +產品); \t \t \t \t \t \t} –

+1

嗨內特。正如Amer所說,請將您的代碼作爲文本分享。我建議你查看http://stackoverflow.com/help/how-to-ask來幫助你開始。一個格式正確的問題會得到更快的回答。 –

回答

0

在你的代碼中,while循環永遠保持運行。所以這就是爲什麼它不打印任何東西。

試試這個:

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

編輯:嘗試輸入比0數目少那麼你while循環應該結束。

+0

我試過了你說的,但那不是我需要。這是我所需要的:例如,我輸入2,3和-2,我希望程序打印產品6。 –

+0

@nate lin:看看Andreas的代碼。 – 2016-09-29 17:51:04

1

首先,由於0小於1但不會結束循環,所以當您輸入「小於1的數字」時,測試num>=0不是結束循環的測試。

二,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); 
+0

謝謝你正在工作 –

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

1)沒有解釋的代碼不太有用。 2)通常最好使用'hasNextInt()',而不是使用異常。請參閱[防禦性編程vs異常處理?](http://programmers.stackexchange.com/q/139171/202153) – Andreas

+0

@Andreas這是您的意見。如果他們需要解釋,他們可以問,我會解釋它。 – brso05

+0

@Andreas也可以鏈接到一個'python'問題......這是** java **。 – brso05