0

私は 2D 配列を持っていますが、x 座標を変更すると、毎回間違った結果が得られます。

  int[][] arr = {{0, 2, 0, 0, 1},{0, 2, 0, 0, 1},{0, 2, 0, 0, 1},{0, 2, 0, 0, 1},{0, 2, 0, 0, 1}};
int now, previous;

   for (int i = 1; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        now = arr[i][j];
        previous = arr[i-1][j];
        }
   }

変数の結果は現在 0, 2, 0, 0, 1... なぜ 2, 0, 0, 1 だけが必要なのか 例 i = 1 の変数の i 座標を変更すると、出力は 0, 2 のままです、0、0、1... どこに問題があるか分かりますか?ありがとう

4

2 に答える 2

0

j = 0 の代わりに j = 1 を入力する必要があります。

i 変数は、配列を構成するベクトルを反復処理していますが、j 変数は、それらのベクトルの 1 つの各要素を反復処理しています。各ベクトルの最初の要素をスキップしたいので、j を 0 ではなく 1 から開始するように変更する必要があります。

いずれにせよ、ループ内で属性を繰り返しているため、変数に割り当てられた最後の値のみが保持されます。したがって、これが使用している元のコードであると仮定すると、arr 配列が変更されないと仮定して、「for」ループを削除し、属性を直接実行する必要があります。

于 2012-04-07T19:39:24.807 に答える
0

i は例の外側の配列に対応するためです。0, 2, 0, 0, 1あなたが持っているものは4回印刷されます 。私はあなたが望むものを5回表示することを収集します2, 0, 0, 1...そのためにあなたはすべきです

for (int i = 0; i < 5; i++) {
 for (int j = 1; j < 5; j++) {
     now = arr[i][j];
     previous = arr[i-1][j];
     }
}
于 2012-04-07T19:40:04.993 に答える