【发布时间】:2017-12-07 21:36:08
【问题描述】:
它的总和非常好,但是无论我输入什么数字,它都会将值平均为 0.0。如何让它输出正确的平均值?
import java.util.Scanner;
import java.io.*;
import java.util.ArrayList;
public class Calculation {
static Toolkit tools = new Toolkit();
public static void main(String [] args) {
double average = 0.0;
double sum = 0;
int i =0;
int num = 0;
int nElements = 0;
Scanner console = new Scanner(System.in);
ArrayList<Integer> value = new ArrayList<Integer>();
System.out.println("Enter value: ");
num = console.nextInt();
while(num != 0) {
value.add(new Integer(num));
}
for(i = 0; i < value.size(); i++) {
sum += value.size();
}
average = sum / value.size();
System.out.println("Number of values read: " + value.size());
System.out.println("Values sum: " + sum + "Values average: " +
average);
System.exit(0);
}
}
【问题讨论】:
-
while(num != 0) { value.add(new Integer(num)); }这将是一个无限循环,因为您一旦进入其中就不会更改num,因此条件永远不会变为假。我不确定您如何验证总和是否如您声称的那样正常工作。 -
是的,你是对的,我忘了在这段代码中添加
num = console.nextInt();。但是,在我添加它之后,它会将数字相加,但仍将平均值计算为 0。 -
当我运行添加了该行的代码时,总和不正确,但不正确总和的平均值是正确的。如果我输入 5、5、5、0,我得到的总和为 9.0,平均为 3.0。同样,我不确定您如何看待您所看到的,因为您发布的代码与您描述的不符。
-
这是一条奇怪的线:
sum += value.size() -
是的,您不想将列表的大小添加到总和中,而是要将当前值添加到总和中
sum += value.get(i)