【问题标题】:How do I cast an array of doubles into an array of integers in Java?如何在 Java 中将双精度数组转换为整数数组?
【发布时间】:2018-04-01 04:21:01
【问题描述】:
这是我的家庭作业问题:“创建一个名为 roundAllUp() 的方法,它接受一个双精度数组并返回一个新的整数数组。这个返回的数组包含双精度数组中的所有数字,但四舍五入。 "
这是我目前的方法:
public static int[] roundUp(double[] array2){
for(int i = 0; i < array2.length; i++){
Math.ceil(array2[i]);
}
}
从双精度数组中四舍五入后,如何将它们返回到整数数组中?
【问题讨论】:
标签:
java
arrays
int
double
【解决方案1】:
您已经接近了,您需要创建一个新的 int(s) 数组并分配您的 Math.ceil 调用的结果(使用适当的演员表)。喜欢,
public static int[] roundUp(double[] array2) {
int[] arr = new int[array2.length];
for (int i = 0; i < array2.length; i++) {
arr[i] = (int) Math.ceil(array2[i]);
}
return arr;
}
如果您使用的是 Java 8+,您还可以使用 DoubleStream 并将每个元素映射到 int,然后再转换为一行中的数组。喜欢,
public static int[] roundUp2(double[] array2) {
return DoubleStream.of(array2).mapToInt(d -> (int) Math.ceil(d)).toArray();
}
【解决方案2】:
我相信此时简单的强制转换就可以解决问题:(int) Math.ceil(array2[i]) 是 array2[i] 的四舍五入的 int 表示。从那里您只需将这些 ints 分配给 int 数组 (int[]) 并返回它。