2017-10-20 18 views
2

숙제 문제입니다 : "double 배열을 취하고 새로운 정수 배열을 반환하는 roundAllUp()이라는 메서드를 만듭니다.이 반환 된 배열에는 double 배열의 모든 숫자가 포함되지만 반올림됩니다." 내가 정수의 배열을 반환 할 수있는 방법, 값이 두 배의 배열에서 반올림되면자바의 정수 배열에 복소수 배열을 어떻게 캐스팅합니까?

public static int[] roundUp(double[] array2){ 
    for(int i = 0; i < array2.length; i++){ 
     Math.ceil(array2[i]); 
    } 
} 

: 여기

내가 지금까지 가지고있는 방법이다?

답변

5

가까운 경우 int (들)의 새 배열을 만들고 Math.ceil 번의 결과 (적절한 캐스트 포함)를 지정해야합니다. 자바 8 이상을 사용하는 경우처럼,

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; 
} 

, 당신은 또한 DoubleStream를 사용하여 한 줄에 배열로 변환하기 전에 int 각 요소를 매핑 할 수 있습니다. 좋아요,

public static int[] roundUp2(double[] array2) { 
    return DoubleStream.of(array2).mapToInt(d -> (int) Math.ceil(d)).toArray(); 
} 
0

간단한 캐스팅이이 시점에서 트릭을 수행 할 것이라고 생각합니다. (int) Math.ceil(array2[i])int의 반올림으로 array2[i]입니다. 거기에서 intint 배열 (int[])에 할당하고 반환해야합니다.