JAVA:查找ArrayList双精度的平均值

JAVA:查找ArrayList双精度的平均值,java,arraylist,double,Java,Arraylist,Double,我正试图复制这个精确的代码,用Double而不是Double替换Integer的每个实例,但每次尝试这样做时都会出现类型不匹配错误。。。有人能帮忙吗 import java.util.ArrayList; import java.util.Scanner; public class Mean { public static void main(String[] args) { ArrayList<Integer> numbers = new ArrayLis

我正试图复制这个精确的代码,用Double而不是Double替换Integer的每个实例,但每次尝试这样做时都会出现类型不匹配错误。。。有人能帮忙吗

import java.util.ArrayList;
import java.util.Scanner;
public class Mean {

    public static void main(String[] args) {
        ArrayList<Integer> numbers = new ArrayList<Integer>();
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            Integer input = in.nextInt();
            numbers.add(input);
        }
        in.close();

        Integer sum = 0;
        for (Integer element : numbers) {
            sum += element;
        }
        System.out.println(sum / numbers.size());
    }
}

你需要改变你正在寻找的,我还建议使用界面和菱形操作符。最后,关闭System.in上的扫描仪始终是个坏主意。所以

public static void main(String[] args) {
    List<Double> numbers = new ArrayList<>(); // <-- List and Diamond Operator
    Scanner in = new Scanner(System.in);
    while (in.hasNextDouble()) { // <-- hasNextDouble()
        Double input = in.nextDouble(); // <-- get the next double
        numbers.add(input);
    }
    // in.close(); // <-- Wraps System.in, don't do this.

    Double sum = 0.0; // <-- initialize as double
    for (Double element : numbers) {
        sum += element; // <-- add the values.
    }
    System.out.println(sum / numbers.size());
}

只有一条线会引起问题,那就是

Double sum = 0;
这是因为Java将文本0视为int,可以自动将其装箱为整数,也可以将其加宽为double,但不能同时将其变为double

只需将声明更改为双文本:

Double sum = 0d;

我没有足够的代表来评论埃利奥特的帖子。我刚刚在他的代码中添加了一个结束条件,这样我们就可以防止无限循环,一旦你输入了结束,获取输入的过程就完成了,它会计算结果

package Mean;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; 

public class Mean {

    public static void main(String[] args) {
        List<Double> numbers = new ArrayList<>(); // <-- List and Diamond Operator
        Scanner in = new Scanner(System.in);
        while (in.hasNextDouble()) { // <-- hasNextDouble()
            Double input = in.nextDouble(); // <-- get the next double
            numbers.add(input);
            //if (numbers.equals("end")) (revision :  unnecessary, type any non double to stop loop)
            //    break;
            }

        } 
        // in.close(); // <-- Wraps System.in, don't do this.

        Double sum = 0.0; // <-- initialize as double
        for (Double element : numbers) {
            sum += element; // <-- add the values.
        }
        System.out.println(sum / numbers.size());

    }
}

您是否也执行Double input=in.nextDouble;?你犯了什么错误?请发布异常跟踪。为什么不给我们看看用双精度替换整数的代码?发布的原始代码与您的问题无关…我想我会展示此代码,因为它的功能正是我希望它的方式。数字的结尾永远不会相等,一旦输入非双精度,hasNextDouble将返回false。列表数字如何等于字符串的结尾?你在用什么平台?你好,我刚刚搞错了。很好的发现。我以前不知道。代表补充说!!