JAVA:查找ArrayList Double的均值

时间:2014-09-03 14:20:25

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

3 个答案:

答案 0 :(得分:3)

您需要更改Scanner正在寻找的内容,我还建议您使用界面List和钻石运营商。最后,在Scanner上关闭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());
}

答案 1 :(得分:1)

只有一行导致问题,那就是

Double sum = 0;

这是因为文字0被Java视为int,可以自动将其设置为Integer或加宽为double,但不能两者都是Double

只需将声明更改为双字面值:

Double sum = 0d;

答案 2 :(得分:1)

我没有足够的代表评论艾略特的帖子。我刚刚在他的代码中添加了一个结束条件,这样我们就可以防止无限循环,一旦你输入“end”,输入结束的过程就会计算结果。

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

    }
}