2016-04-22 15 views
0

Iは、配列を有します(私の場合は2)、元の配列の各値を配列内の対応するインデックスに割り当てます。次に、チャンク番号のインデックスをインクリメントし、個々のアレイが1の長さに達するまで繰り返してインデックスをリセットします。トラブル

問題は、私はすべてのことを行うために書いたコードは何も出力していないされています

public class Debug 
{ 
    private static int[] array = {5, 2, 1, 6, 3, 7, 8, 4}; 

    private static void chunkArray(int chunkSize) 
    { 
     int chunkNumIndex = 0; 
     int chunkIndex = 0; 
     int numOfChunks = (int)Math.ceil((double)array.length/chunkSize); 
     int[][] twoDimensionalArray = new int[numOfChunks][chunkSize]; 

     for (int i = 0; i < array.length; i++) 
     { 
      twoDimensionalArray[chunkNumIndex][chunkIndex] = array[i]; 
      chunkIndex++; 

      while(chunkNumIndex < numOfChunks) 
      { 
       if (chunkIndex == chunkSize) 
       { 
        chunkNumIndex++; 
        chunkIndex = 0; 
       } 
      } 
     } 

     for(int i = 0; i < chunkNumIndex; i++) 
     { 
      for(int j = 0; j < chunkIndex; j++) 
      { 
       System.out.printf("%5d ", twoDimensionalArray[i][j]); 
      } 

      System.out.println(); 
     } 
    } 

    public static void main(String args[]) 
    { 
     chunkArray(2); 
    } 
    } 

誰もが私のプログラムをデバッグするには助けになるだろうか?

答えて

1

問題はあなたが不必要なwhile(chunkNumIndex < numOfChunks)を持っていないということです。また、

for (int i = 0; i < array.length; i++) { 
     twoDimensionalArray[chunkNumIndex][chunkIndex] = array[i]; 
     chunkIndex++; 
     if (chunkIndex == chunkSize) { 
      chunkNumIndex++; 
      chunkIndex = 0; 
     } 
    } 

chunkNumIndexchunkIndexの値は、ループの最後のためになるよう、動的であることを覚えて、代わりにtwoDimensionalArray.lengthtwoDimensionalArray[0].lengthを使用します:

for(int i = 0; i < twoDimensionalArray.length; i++) { 
     for(int j = 0; j < twoDimensionalArray[0].length; j++) { 
      System.out.printf("%5d ", twoDimensionalArray[i][j]); 
     } 
    } 
0
if文は正しく変数を反復処理するのに十分です

あなたはこれを不必要に難しくしています.chunkIndexとchunkNumIndexのカウンタを保持する必要はありません。divとmod iだけです。

int numOfChunks = (array.length/chunkSize) + (array.length % chunkSize == 0 ? 0 : 1); 
int[][] twoDimensionalArray = new int[numOfChunks][chunkSize]; 
for (int i = 0; i < array.length; i++) { 
    twoDimensionalArray[i/chunkSize][i % chunkSize] = array[i]; 
} 

何かが既に仕事をしているはずです。