在java中输入为零之前的整数乘积

时间:2017-09-16 11:01:30

标签: java while-loop

嘿伙计们,我对java编码很新。我试图制作一个程序,它接受用户的输入并将这些输入相乘,直到用户输入零。然后该程序应停止并输出所有先前数字的乘积。问题是当我输入" 0"在一系列数字之后,它在产品序列中使用零。在第二次输入零后,它最终停止,但总产品等于零。

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

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

您可以接受用户输入:

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

使用当前的解决方案,您可能需要输入0两次以跳过while,因为其中一个扫描输入控制迭代的逻辑,而另一个评估产品(最终将是0)。

答案 1 :(得分:0)

在您尝试的代码中,您正在消耗扫描仪输入1的2倍用于检查条件,1用于乘法值...

你可以使用另一个变量并在while中证明输入是否与零不同

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

    number = sc.nextInt();
    inp = number;
    if (number != 0)
        prod *= number;
}

答案 2 :(得分:0)

您可以在 while 循环中的一行中结合读取用户输入和检查停止条件,这种样式更优雅,但可读性更差...

import java.util.Scanner;
class Product{
Scanner sc = new Scanner( System. in );
int number,prod=1;
void doProd(){
while( sc.hasNext() && 0!= (number=sc.nextInt()) ){
prod = prod * number;
}
System.out.println( "Product is "+ prod );
}
public static void main( String[]  args ) {
(new Product()).doProd();
}
}