这是我的作业问题:“创建一个名为roundAllUp()
的方法,它接收一个双精度数组并返回一个新的整数数组。这个返回的数组包含双精度数组中的所有数字,但是舍入“起来。
这是我到目前为止的方法:
public static int[] roundUp(double[] array2){
for(int i = 0; i < array2.length; i++){
Math.ceil(array2[i]);
}
}
一旦值从双精度数组中向上舍入,我如何以整数数组返回它们?
答案 0 :(得分:5)
您已经关闭了,您需要创建一个新的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();
}
答案 1 :(得分:0)
我相信简单的投射会在这一点上起作用:(int) Math.ceil(array2[i])
是int
的向上舍入array2[i]
表示。在那里,您只需将int
分配给int
数组(int[]
)并将其返回。