2017-09-16 46 views
0

嘿傢伙我絕對是Java編程的新手。我試圖製作一個程序,它接受用戶的輸入並將這些輸入相乘,直到用戶輸入零。然後該程序應停止並輸出以前所有數字的產品。問題是,當我在一系列數字之後輸入「0」時,它會在產品序列中使用零。第二次輸入零後,它終於停止,但總產品等於零。直到輸入爲零的整數產品在java中

import java.util.Scanner; 

class Product{ 
    Scanner sc = new Scanner(System.in); 
    int number; 
    int prod; 

    void doProd(){ 
     prod = 1; 

     while (sc.nextInt() != 0) { 
      number = sc.nextInt(); 
      prod = prod * number; 
     } 
     System.out.println("Product is "+ prod); 
    } 

    public static void main(String[] a) { 
     (new Product()).doProd(); 
    } 
} 

感謝您的幫助!

+1

提示:您在每次循環迭代時都使用了對nextInt()的兩次調用。如果用戶輸入的第一個值不是0,並且如果用戶輸入0作爲第二個值,則不會停止循環。 –

+0

謝謝!我已將while循環中的nextInt()更改爲「number」。所以我的輸入數字不應該是0.另外我也給了一個初始值爲1的數字。但現在我的產品似乎總是0 ... –

+0

切換了兩行,所以nextInt()將在產品之後。解決了。謝謝! –

回答

0

您可以接受用戶的輸入,而不是爲:

number = sc.nextInt(); // input once 
while (number != 0) { 
    prod = prod * number; 
    number = sc.nextInt(); // input for next iterations 
} 

以您目前的解決方案,則可能需要輸入0兩次跳過了while的,因爲掃描輸入的一個支配迭代的邏輯而另一個評估爲產品(最終將爲0)。

在你嘗試,你是消費2次掃描儀輸入1檢查乘法值的條件和1碼
0

...

您可以使用另一個變量,而裏面的證明是否輸入是不同於零

int inp = -1; 
while (inp != 0) { 
    System.out.println("give input: "); 

    number = sc.nextInt(); 
    inp = number; 
    if (number != 0) 
     prod *= number; 
} 
相關問題