Java 我想平均输入到ArrayList中的数字,但是它只计算平均值为0.0

Java 我想平均输入到ArrayList中的数字,但是它只计算平均值为0.0,java,arraylist,average,Java,Arraylist,Average,它的总和非常好,但是不管我输入什么数字,它的平均值都是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 ave

它的总和非常好,但是不管我输入什么数字,它的平均值都是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);
    }
}
import java.util.Scanner;
导入java.io.*;
导入java.util.ArrayList;
公共类计算{
静态Toolkit tools=新Toolkit();
公共静态void main(字符串[]args){
双平均=0.0;
双和=0;
int i=0;
int num=0;
整数元素=0;
扫描仪控制台=新扫描仪(System.in);
ArrayList值=新的ArrayList();
System.out.println(“输入值:”);
num=console.nextInt();
while(num!=0){
添加(新整数(num));
}
对于(i=0;i
现在,只有在第一次输入
0
时,循环才会结束,否则将导致无限循环。相反,您需要读取循环中的下一个整数,如下所示:

while(num != 0) {
    value.add(new Integer(num));
    num = console.nextInt();  // add this line
}
此外,请更改此项:

sum += value.size();
为此:

sum += value.get(i);

因为您希望将
ArrayList
中的数字减少为单个值,而不是在每次迭代时对
ArrayList
的大小进行求和

奥敏所说的是正确的。然而,这不是唯一的问题。在for循环中,您正在将Arraylist的大小添加到“sum”变量中。您应该将其保存的值相加,即求和

double average = 0.0;
    double sum = 0;
    int i = 0;
    int num = 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));
        num = console.nextInt();
    }

    for (i = 0; i < value.size(); i++) {
        sum += value.get(i);
    }
    average = sum / value.size();
    System.out.println("Number of values read: " + value.size());
    System.out.println("Values sum: " + sum + "Values average: " + average);
双平均值=0.0;
双和=0;
int i=0;
int num=0;
扫描仪控制台=新扫描仪(System.in);
ArrayList值=新的ArrayList();
System.out.println(“输入值:”);
num=console.nextInt();
while(num!=0){
添加(新整数(num));
num=console.nextInt();
}
对于(i=0;i
while(num!=0){value.add(new Integer(num));}
这将是一个无限循环,因为一旦进入,就不会更改
num
,因此条件永远不会变为false。我不确定您是如何验证总和是否如您所说的那样正常工作的。是的,您是正确的,我忘记添加
num=console.nextInt()输入到该代码中。但是,在我添加它之后,它对数字求和,但仍然将平均值计算为0。当我运行添加了该行的代码时,求和是不正确的,但不正确的求和的平均值是正确的。如果我输入5,5,5,0,我得到的总和是9.0,平均值是3.0。同样,我不确定你是如何看到你所看到的,因为你发布的代码与你描述的不一样。这里有一个奇怪的行:
sum+=value.size()
Ya,你不想将列表的大小添加到你的sum中,你想将当前值添加到你的sum
sum+=value.get(I)