2016-12-11 2 views
-3
int[] array = new int[9]; 
    int[][] matrix = { {0,1,2}, 
         {3,4,5}, 
         {6,7,8}}; 
    for (int i = 0; i < 3; i++) { 
     for (int j = 0; j < 3; j++) { 
      array[i+j] = matrix[i][i]; 
     } 
    } 
    for (int i = 0; i < array.length; i++) { 
     System.out.println(array[i]); 
    } 

私は{0,1,2,3,4,5,6,7,8,9}しかし、アウトプットは設定する[インデックス] =行列[インデックス] [その他インデックス]

00 01 02 43 44 45 86 87 88 

ですこれはsodukuパズルを解決するために、単にサイドプロジェクトで、まだこの問題はいつも私を困惑しています。私は通常これを回避する方法を見つけようとしますが、なぜこれが機能していないのかを知りたいと思っています。

+3

まず、 'matrix [i] [i];'は対角線の値を取得するだけなので、あなたが意図したものではありません。また、複数のターゲット配列値を複数回上書きしています。 – azurefrog

+2

'array [i + j]'は 'array [4]'にしか到達しません。他のスロットにどのように値を取得できますか? – Gendarme

+1

スドクは[0,9]からですか?私はいつも範囲[1、9]を見る –

答えて

3

どのように出力を得ているのかわかりませんが、それはあなたのコードが与えるものではありません。とにかく...

array[i+j]は、0〜4の値を繰り返すことを望みません。 arrayの各要素を繰り返し処理したいので、array[i*3 + j]を使用してください。また、代わりにmatrix[i][i]を使用したくないのですが、代わりにmatrix[i][j]と入力してください。

+0

ありがとう!これは私をたくさん襲っていた!また、コードを変更して、残りのプログラムで設定した不必要な変数が多く含まれないようにしました。私はそうすることで私の出力を混乱させているに違いないが、これはそれを修正した:) –

0
int index = 0; 
    for (int i = 0; i < 3; i++) { 
    for (int j = 0; j < 3; j++) { 
     array[index] = matrix[i][j]; 
     index++; 
    } 
    } 
関連する問題