2017-05-05 7 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

をあなたは原始的なものにプリミティブの配列をキャストすることはできません。それらを 'long'に変換する' int'には、どのような操作をしたいのですか? –

+2

longの配列を定義する必要がある場合は.... –

+0

ok、これを試してみます。ありがとう –

答えて

1

ので、これが動作する場合は、Javaの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へのようなキャストはありません。

関連する問題