Java Error : cannot invoke size() on the primitive type double
Java Error : cannot invoke size() on the primitive type double
我已经学习 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;
(你应该考虑检查浮动并决定哪个更适合你 - 在这里并不重要)
从 java 1.7 开始,您可以以更短的方式声明列表(搜索 "diamond expression")。
ArrayList<Double> list = new ArrayList<>();
在行
double e = average.get(average.size() - 1);
你可能用 list
而不是平均值,这应该可以修复标题中的错误。
现在您的代码多次打印平均值,只有最后一次是列表项的真正平均值。考虑将平均值的打印命令移出 for 循环。
试试这个:
for (Double x: list)
{
all += x;
}
average = all/count;
System.out.println(average);
您不能在原始数据上调用 size() 方法 type.It 可以在 java.util.List
上调用,等等。所以你的 double e = average.get(average.size() - 1);
没有意义。
可以直接写:
average = all/count;
您在循环中保留了太多代码。
当你遍历双打列表时,你只需要保持 运行 总数。之后,您应该将平均值计算为双精度总和除以列表的大小。
修复循环的方法如下:
for (Double x: list)
{
all += x;
}
average = all/count;
System.out.println(average);
//These lines are not useful, so they are commented out.
//double e = average.get(average.size() - 1);
// System.out.println(e);
我已经学习 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;
(你应该考虑检查浮动并决定哪个更适合你 - 在这里并不重要)
从 java 1.7 开始,您可以以更短的方式声明列表(搜索 "diamond expression")。
ArrayList<Double> list = new ArrayList<>();
在行
double e = average.get(average.size() - 1);
你可能用 list
而不是平均值,这应该可以修复标题中的错误。
现在您的代码多次打印平均值,只有最后一次是列表项的真正平均值。考虑将平均值的打印命令移出 for 循环。
试试这个:
for (Double x: list)
{
all += x;
}
average = all/count;
System.out.println(average);
您不能在原始数据上调用 size() 方法 type.It 可以在 java.util.List
上调用,等等。所以你的 double e = average.get(average.size() - 1);
没有意义。
可以直接写:
average = all/count;
您在循环中保留了太多代码。 当你遍历双打列表时,你只需要保持 运行 总数。之后,您应该将平均值计算为双精度总和除以列表的大小。
修复循环的方法如下:
for (Double x: list)
{
all += x;
}
average = all/count;
System.out.println(average);
//These lines are not useful, so they are commented out.
//double e = average.get(average.size() - 1);
// System.out.println(e);