Java错误: cannot invoke size() on the primitive type double

标签 java arraylist double size

我已经学习 Java 大约一周了,我正在开发一个程序,可以找到任意数量的数字的平均值。但我遇到了一个问题,它将每个数字除以总数,而不是除所有值的总和。我还尝试查找数组列表的最后一个值,然后将其除以计数。但没有成功。

这是我的代码:

import java.util.Scanner;
import java.util.*;

public class Average {

    public static void main (String args[]){

        double  average, count, orig = (double) 0;
        double all =(double) 0;

        Scanner input = new Scanner (System.in);

        ArrayList<Double> list = new ArrayList<Double>();

        while (input.hasNextDouble()) list.add(input.nextDouble());

        count = (double) list.size();

        for (Double x: list) {
            all += x;
            average = all/count;
            System.out.println(average);

            double e = average.get(average.size() - 1);
            System.out.println(e);
        }
    }
}

输出是:

21
20
23
24
25
a
4.2
8.2
12.8
17.6
22.6
25.0

最佳答案

您的代码有相当多的冗余。

double  average, count, orig = (double) 0;

可以写成:

double average, count, orig = 0.0d;

(您应该考虑检查 float 并决定哪个更适合您 - 在这里并不重要)

从 java 1.7 开始,您可以以更短的方式声明列表(搜索“钻石表达式”)。

ArrayList<Double> list = new ArrayList<>();

在行

double e = average.get(average.size() - 1);

您可能使用 list 而不是average,这应该可以修复标题中的错误。

现在您的代码正在多次打印平均值,只有最后一次才是列表项的真正平均值。考虑将平均值的打印命令移出 for 循环。

试试这个:

for (Double x: list)
    {
        all += x;

    }
average = all/count;
System.out.println(average);

关于Java错误: cannot invoke size() on the primitive type double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31201438/

相关文章:

java - 将行和列设置为数组

java - REST:@autowired heavenService 上的 java.lang.NullPointerException

java - 如何将日期转换为int数组?

java - 获取相同字符串组中 ArrayList 中 double 值的总和

java - 乘以百分比值

java - 下载的视频在 Android 版本 <= 6.1 上无法播放

java - 根据日期(每小时)对对象进行分组列表

java - 为什么我的递归方法使我的程序抛出 InvalidClassException?

java - 为什么以不同的顺序将三个 double 值相乘会得到不同的答案?

java - 空指针异常的解释