2012-01-26 18 views
0

Javaプログラムを作成しようとすると、値1の位置を配列の特定の位置に変更することができます。たとえば、値1を位置[5] [4]と私はそれを次の(またはプレビュー位置)に移動し、値1を削除し、値0を前の位置に保存します。私の問題は、私は値1を移動させることができるということですが、私は.MYコードは以下れる前の位置(前の位置へのストア値0)からそれを削除することはできません。Javaの2次元配列の値を変更する

for (int row = 0; row < 6; row++) { 
    for (int col = 0; col < 6; col++) { 
     int randomPosition = r.nextInt(2); 

     array[row][col] = 0; 
     array[2][3] = 1; 
     array[4][4] = 1; 

     if (array[row][col] == 1) { 
      array[row][col] = 0; 

      if (randomPos == 0) { 
       array[row - 1][col] = 1; 

      } else if (randomPos == 1) { 
       array[row][col - 1] = 1; 

      } else if (randomPos == 2) { 
       array[row + 1][col + 1] = 1; 

      } 
     } 
    } 
} 

for (int row = 0; row < cells.length; row++) { 
    for (int col = 0; col < cells[row].length; col++) { 
     System.out.print(" " + cells[row][col]); 
    } 
} 
+0

「私はできません」と説明してください。実際の出力対期待される出力、エラーメッセージなど。 – paislee

+0

実際のコードを含めてください。これらのループボディは不完全で意味をなさない。 –

+0

宿題の場合は、そのまま宿題にしてください。 –

答えて

1

あなたはおそらく取得していますArrayIndexOutOfBoundsExceptionこれは、[row-1][col-1](+1も同様)を参照していますが、rowまたはcolは0または最大インデックスである可能性があります。そのような場合に1を加算または減算すると、そうでないインデックスを参照しようとします存在する。

あなたが参照しているインデックスが実際に存在することを確認するために小切手を入れなければなりません。

例:

if(randomPos==0){ 
    if(row-1 > 0) 
     array[row-1][col] = 1; 
} 

また、コメントごとに、あなたが実際に見ているものを教えなければならない、とどのようにそれが正しく動作していないことを知っています。あなたが意味をなすことができないエラーメッセージがある場合(最初にそれらを読むことを試みてください!)、それらも同様に投稿してください。