JAVA:查找ArrayList双精度的平均值
我正试图复制这个精确的代码,用Double而不是Double替换Integer的每个实例,但每次尝试这样做时都会出现类型不匹配错误。。。有人能帮忙吗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
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。列表数字如何等于字符串的结尾?你在用什么平台?你好,我刚刚搞错了。很好的发现。我以前不知道。代表补充说!!