2017-05-05 2 views
2

정수형 배열을 긴 배열로 변환하려고 시도하고 있지만이 작업을 수행하는 방법을 잘 모릅니다.정수로 배열을 long 형으로 캐스팅

지금까지, 내 ​​코드는 다음과 같습니다 : 내가 좋아하는 일을 시도

import java.util.Random; 

public class main { 

public static int[] sect(){ 
    int[] returned = new int[4]; 
    Random rand = new Random(); 
    returned[0] = 4; 
    returned[1] = rand.nextInt(8) + 1; 
    returned[2] = rand.nextInt(7) + 1; 
    returned[3] = rand.nextInt(6) + 1; 

    return returned; 
} 

public static String num(){ 
    for (int j = 0; j < 4; j++) { 
     int[] ints = sect(); 
     for(int i =0; i < ints.length; i++) { 
      System.out.print(ints[i]); 
     } 
    } 
    return null; 
} 
} 

:

return ((long)num()); 

하지만 그건 작동하지 않습니다. 아무도 내가이 일을 어떻게 할 것인지 알고 있니?

+1

당신은 원시적 하나에 프리미티브의 배열을 캐스팅 할 수 없습니다. 'int'를 'long'으로 변환하려는 작업은 무엇입니까? –

+2

long 배열로 하나를 정의해야하는 경우 .... –

+0

괜찮습니다. 감사합니다. –

답변

1

그래서이 작동하는지 당신은 자바 8 사용 :

int[] arrayOfIntegers = {1, 2, 3, 4, 5, 6}; 

long[] arrayOfLongs = Arrays.stream(arrayOfIntegers).mapToLong(i -> i).toArray(); 
+0

https://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.html#asLongStream-- – shmosel

+0

@GhostCat 'System.arraycopy()'를 사용할 수 있다고 생각지 않습니다. 다른 배열 유형을 사용합니다. – shmosel

0

당신은 그렇게 할 수 없습니다.

동일한 크기의 배열을 만들고 해당 배열에 int 값을 복사하기 만하면됩니다. 안타깝게도 System.arraycopy()는이를 수행 할 수 없습니다 ... 여기에서는 수동 복사를 피할 수 없습니다.

int 배열은 long 배열이 아니기 때문에. 그러므로 하나의 int에서 하나의 long으로의 캐스트가 없다.