0

私の他の対角法は正しく機能しません。

public int sumOtherDiag()
{
   int otherDiag = 0;
   for (int i = 0; i < square.length−1; i++)
   {
      otherDiag += square[i][i];
   }
   return otherDiag;
}

ここに表示する出力はありませんが、誰かがすぐに間違っていると思うものはありますか?

このメソッドは、要素を追加し、魔方陣の 2 番目の対角線 (右から下) の合計を取得することになっています。たとえば、私の正方形が

01 04 03

03 05 04

05 02 04

出力します

03 + 05 + 05 = and get 13

しかし、私の実際の出力は、想定よりも少ない数値を出力しています。

(私の出力なしで説明するのは難しいです。プログラムにアクセスできるようになったら、後でアップロードします)

どんな助けでも大歓迎です、ありがとう!

4

2 に答える 2

1
public int sumOtherDiag()
{
   int otherDiag = 0;
   int count = square.length;
   for (int i = 0; i < square.length; i++)
   {
      otherDiag += square[i][--count];
   }
   return otherDiag;
}
于 2015-02-05T02:55:24.780 に答える
1

コードを分解して、何をしたか、何を望んでいたかを確認しましょう。

あなたの座標が[0,0]であるという 1 つのループで、最後のインデックスが 未満になるように選択したため、私の知る限り[1,1]見逃しました。インデックスはゼロから 未満まで開始する必要があります。[2,2]square.length−1square.lenght

このコードを実行すると:

int[][] array = {{01, 04, 03},
        {03, 05, 04},
        {05, 02, 04}
        };
        int otherDiag = 0;
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i][i]);
        }

あなたの結果はこれでしょう

1
5
4

array.lenght-1除外することを選択した場合、出力は

1
5

ご覧のとおり、最後のインデックスである 4 を残しましたが、これはあなたが探しているものではないと確信しています。

垂直要素ではなく対角要素の合計が必要です

欲しいコーディネートは

[0,2][1,1]、および[2,0]

あなたが望むものを理解するために私のサンプルを青写真として使用しました

たとえばx = new int[3][4]x[0]、、x[1]およびx[2]が 1 次元配列であり、図に示すように、それぞれに 4 つの要素が含まれているx.length3し ます。x[0].lengthx[1].lengthx[2].length4

ここに画像の説明を入力

2D 配列をトラバースして intilize する方法は、青写真として次のサンプルに従うことができます

ここに画像の説明を入力

于 2015-02-05T03:05:46.377 に答える