2017-09-16 47 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; 
} 
相关问题