嘿伙计们,我对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();
}
}
感谢您的帮助!
答案 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();
}
}