質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

8622閲覧

Java 二次元配列の列ごとの合計の求め方

ayamame

総合スコア3

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

3クリップ

投稿2021/06/14 16:46

編集2021/06/15 04:40

前提・実現したいこと

5*5 の 2 次元配列を用いて,
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25 のようにデータを入れ,
1)すべての合計を求めなさい.
2)横の合計(5 行あるので出力 5 つ)を求めなさい.
3)縦の合計を求めなさい

発生している問題

1)2)はなんとなくわかったのですが3)の求め方がわかりません

###試したこと

Java

1 2 3public class 2 { 4 5 public static void main(String[] args) { 6 // TODO 自動生成されたメソッド・スタブ 7 8 //(1) 9 int[][] array1 = { 10 {1,2,3,4,5}, // 1行目 11 {6,7,8,9,10}, // 2行目 12 {11,12,13,14,15},// 3行目 13 {16,17,18,19,20},// 4行目 14 {21,22,23,24,25},// 5行目 15 }; 16 17 18int sum = 0; 19 20 for(int j = 0; j < array1.length; j ++) { 21 System.out.print((j + 1) + "行目: "); 22 int sumScore = 0; 23 for(int i = 0; i < array1[j].length; i ++) { 24 System.out.print(array1[j][i] + " "); 25 sumScore += array1[j][i]; 26 } 27 System.out.println("合計: " + sumScore); 28 sum += sumScore; 29 } 30 System.out.println("総計: " + sum); 31 32 } 33 } 34

プログラミング初めて一週間なので初学者にもわかるように説明してもらえると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Crimson_Tide

2021/06/14 17:59 編集

3)に取り組む前に、2)の横の合計の出力が、例えば2行目は1行目の合計+2行目の合計になっていますが、これは正しい要件ですか? 3)も例えば2列目の合計 の表示は 1列目の合計値+2列目の合計値を表示するということでしょうか?
ayamame

2021/06/14 21:13

すいません、2)も違っていました。 列ごとの合計値だけです。
ayamame

2021/06/14 21:43

2)修正しました。まだ、間違いがあればご指摘お願いします。
Crimson_Tide

2021/06/14 22:18

クラス名が全角の2になっていますが、コンパイルして問題なかったでしょうか? 一応unicode文字であれば使えるようですが、私の環境では全角2ではエラーがでました。 ( クラス名、ファイル名を"あ"ならいけました) これは別途調べて頂きたいですが、クラス名や変数名などを識別子といいますが、識別子には先頭数字はNGといった守らないといけないルールと、クラス名の先頭は半角大文字の英数字が推奨されるといった命名指針があります。 また質問内容を修正される場合は、修正前をコメントアウトする、取り消し線を入れて修正した旨の注釈をつけるなど、修正したことがわかるように記載をお願いします。
guest

回答1

0

ベストアンサー

修正されて2)も想定通りの出力になっているようで、自力でできそうな気もしますが…

2)の行の合計値を別変数に変えたのと同じように、列の合計値を別の変数に入れればできそうな気がしませんか?

具体的にいくつかやり方はありますが、できれば今あるforループを生かしたいですよね。
j行i列を j-iと表すと 2つfor文の処理では
0-1 0-2 0-3 0-4 0-5
1-1 1-2 1-3 1-4 1-5
のように推移しているのは理解しているかと思います。

では各列の合計をどのように変数に保持させるか。
列ごとに合計用変数を用意して iが0のときは 1列目の合計用変数に値を追加
iが1のときは、2列目の合計用変数に追加していけば、値を保持することができそうです。
5列あるので5個の変数を宣言する...よりも、もっと効率よく簡単に合計数を保持できる方法を、ayamameさんは御存知ですよね。

あとは、総計の前にそれを列合計として一通り出力すればいいだけです。

極力自分で考えて頂きたかったので、申し訳ないですがこのような回りくどい説明にしています。

補足(追記)
for 文で使う変数を j i の順に使用していますが、 i j k のようにアルファベット順に使うことが一般的(だと思っています)、間違いもしにくいと思います。

投稿2021/06/14 22:58

編集2021/06/14 23:28
Crimson_Tide

総合スコア509

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問