This question already has an answer here:
What does “possible lossy conversion” mean and how do I fix it?
(1个答案)
2年前关闭。
我正在创建一个程序,将双精度数存储在数组中,然后将每个数组存储在ArrayList中,然后从该ArrayList计算平均值,但是我不断收到“从双精度数到整数的可能有损转换”。在第5行中
我是java的新手,所以我可能正在监督一个简单的修复程序。
您正在将数组存储在集合中。所以我将其更改为
这是您如何调用此代码的方法。
因此,请记下我们所做的所有更改。
老实说,我只会为此使用Java 8,我们可以在1行中做到这一点!
(1个答案)
2年前关闭。
我正在创建一个程序,将双精度数存储在数组中,然后将每个数组存储在ArrayList中,然后从该ArrayList计算平均值,但是我不断收到“从双精度数到整数的可能有损转换”。在第5行中
我是java的新手,所以我可能正在监督一个简单的修复程序。
public static double calculateAll(List<double[]> allNumbers) {
double average = 0.0;
double total = 0.0;
for(int i = 0; i < allNumbers.size(); i++) {
total += allNumbers.get(i);
}
average = total/allNumbers.size();
return average;
}
最佳答案
我不确定您要问的是什么,但我认为这就是您想要的。
public static double calculateAll(List<Double> allNumbers) {
double average;
double total = 0.0;
for (Double allNumber : allNumbers) {
total += allNumber;
}
average = total / allNumbers.size();
return average;
}
您正在将数组存储在集合中。所以我将其更改为
Double
注意double
是本机的,而Double
不是本机的。集合中不能包含double
。然后我将for
循环转换为foreach
循环这是您如何调用此代码的方法。
public static void main(String[] args) {
List<Double> doubles = new ArrayList<>();
doubles.add(0.1);
doubles.add(4.1);
double wat = calculateAll(doubles);
System.out.println(wat);
}
因此,请记下我们所做的所有更改。
List<double[]>
已替换为List<Double>
。List
现在保存实例Double
的项目for(int i = 0; i < allNumbers.size(); i++)
更改为for (Double allNumber : allNumbers)
,这只是一个基本的for-each循环。老实说,我只会为此使用Java 8,我们可以在1行中做到这一点!
public static double calculateAll(List<Double> allNumbers) {
return allNumbers.stream().mapToDouble(e -> e / allNumbers.size()).sum();
}