• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:多次元配列について質問)

Javaの多次元配列に関する質問 - 各列の合計を求める解答方法とは?

このQ&Aのポイント
  • Javaの多次元配列に関する質問です。与えられたソースコードでは、2次元配列pの各列(縦方向)の合計を求めています。
  • 解答ソースコードでは、int型の配列sumを用意し、各列ごとに要素を足し合わせています。
  • 具体的には、配列pの各要素をnとして取り出し、nの各要素をjとして取り出しています。sum[j]にn[j]を加算することで、各列の合計を計算しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • R_Earl
  • ベストアンサー率55% (473/849)
回答No.1

横方向に処理という考えはあってます。 ただ、「0番目、1番目、2番目、3番目がsumに累計される」といのが誤りです。 0番目はsum[0]に累計され、1番目はsum[1]に累計され、 2番目はsum[2]に累計されます。 和を保存する変数が配列で、しかもループのたびに配列の添字が変わることを 見落としていたのが勘違いの原因だと思います。 もう一度、sum[j]のjの値に注意しながらソースコードを読んでみましょう。

wantanton
質問者

補足

お返事遅れてしまい大変申し訳ありませんでした。。。 R_Earlさんのご教示でたぶん解決しました! 今から、以下のソースコードが各列方向に累計がされる理由について、その見解を書きますね。正しいかどうか判定してください! int[]sum=new int[p[0].length]; for(int[]n:p){ for(int j=0;j<n.length;j++){ sum[j]+=n[j]; } } 例えば、外側の拡張for文が1回目のループに突入し且つ内側のfor文のループ制御変数jが0である場合、sum[0]にn[0](=p[0][0])が代入され、外側の拡張for文が2回目のループに突入し且つjが0である場合、sum[0]にn[0](=p[1][0])が再代入されるので、縦方向に累計されていくということでしょうか?