2016-04-30 16 views
0

私は値の1D配列を持っています。一連の計算を行うために、ギザギザの配列を使ってこれらの値をグループ分けするのに役立ちます。例: 文字列配列をJavaのギザギザの配列に変換する

int array []={1 2 3 4 5 6 7 8 9 10} 

Iは分離して第3のアレイでつのアレイ内の最初の4、別の配列中の次の3及び最後の3を割り当てます。私は自分のコードでこのような出力を得ることを望んでいた。

int [][] x = new int [3][]; 

x[0] = new int [4]; 
x[0] = {1 2 3 4}; 

x[1] = new int [3]; 
x[1] = {5 6 7}; 

x[2] = new int [3]; 
x[2] = {8 9 10}; 

ループのために、私はグループまたはグループ内の値のN個のMの数でこの配列を分割するための柔軟を使用して、このギザギザのアレイを作製する他の方法はありますか? substring()を使用してこれらの値にアクセスしようとしましたが、これについてどうやってやっていくのか、あるいは私がこのようにしているのかどうか不明です。

for(int i=0; i<x.length; i++) { 
x [i]= array.substring (0,3); 
x [i]=array.substring (4,6); 
x [i]=array.substring(7,9); 
} 

私はプログラミングの初心者ですが、このコードは間違っていますが、助けてください。ありがとうございました。

答えて

0

System.arraycopy()の後ですか?

x[0] = new int[4]; 
System.arraycopy(array, 0, x[0], 0, 4); 
x[1] = new int[3]; 
System.arraycopy(array, 4, x[1], 0, 3); 
x[2] = new int[3]; 
System.arraycopy(array, 7, x[2], 0, 3); 

もしそうでなければ、あなたの質問は多分誤解を招くかもしれません。サブアレイのサイズはどこから来るべきですか?

これは何ですか?

int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
int xLength = 3; 
int[][] x = new int[xLength][]; 
int arrayLength = array.length; 
int remainders = arrayLength % xLength; 
int subArrayLength = arrayLength/xLength; 
int arrayIndex = 0; 
for (int i = 0; i < arrayLength; i++) 
{ 
    int adjustedSubArrayLength = subArrayLength; 
    if (remainders > 0) 
    { 
     adjustedSubArrayLength++; 
     remainders--; 
    } 
    x[i] = new int[adjustedSubArrayLength]; 
    System.arraycopy(array, arrayIndex, x[i], 0, adjustedSubArrayLength); 
    arrayIndex = adjustedSubArrayLength; 
} 
0

したがって、作成したJavaの配列のサイズを変更することはできません。データを格納できる新しい配列が必要になります。 System.arraycopy(src, srcPos, dest, destPos, length)

0

と呼ばれる静的なSystem関数があります。これを試してみてください。

static int[][] to2dArray(int[] array, int... colSizes) { 
    int[][] result = new int[colSizes.length][]; 
    for (int i = 0, start = 0; i < colSizes.length; start += colSizes[i++]) 
     result[i] = Arrays.copyOfRange(array, start, start + colSizes[i]); 
    return result; 
} 

そして

int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
System.out.println(Arrays.deepToString(to2dArray(array, 4, 3, 3))); 
// -> [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]] 
関連する問題