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

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

新規登録して質問してみよう
ただいま回答率
85.35%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Java

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Q&A

解決済

2回答

2408閲覧

Javaの表示方法(科目の合計点数が一人の合計でループする等)

yuutao

総合スコア2

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Java

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

0グッド

1クリップ

投稿2021/07/02 16:42

編集2021/07/03 10:22
コード public static void main(String[] args) { String[] name = {"伊藤", "山田", "佐藤", "吉田", "上野" ,"合計","平均"}; int[] sum = new int [5]; int s = 0; int average = 0; System.out.println("名前 国語 算数 理科 社会 英語 合計 平均"); int[][] a = new int[7][7];//5*5の配列を作成 for (int i = 0; i <5; i++) { System.out.print(name[i] + " "); for (int j = 0; j < 5; j++) { a[i][j] = (int) (Math.random() * 101);//0~100の乱数 a[i][5] = a[i][0] + a[i][1] + a[i][2] + a[i][3] + a[i][4]; a[i][6] = a[i][5] / 5; s = a[0][j] + a[1][j] + a[2][j] + a[3][j] + a[4][j]; average = s / 5; System.out.printf("%10d",a[i][j]); } System.out.printf("%10d",a[i][5]); System.out.printf("%10d",a[i][6]); System.out.println(); } System.out.print("合計"); for(int i = 0; i < 5; i++){ System.out.printf("%10d",s); } System.out.println(); System.out.print("平均"); for(int i = 0; i < 5; i++){ System.out.printf("%10d",average); } }

名前 国語 算数 理科 社会 英語 合計 平均
伊藤 52 77 92 65 67 353 70
山田 2 17 32 54 37 142 28
佐藤 61 14 76 72 37 260 52
吉田 79 72 55 57 90 353 70
上野 86 63 18 91 38 296 59
合計 269 269 269 269 269
平均 53 53 53 53 53

ちなみに今職業訓練でやってます。
やっと2次元配列でこれからクラスとかオブジェクト指向やります。
一人の合計と平均は求めれました!!
ただ科目ごとの合計が求め方がやっぱりでません。
合計の出し方は理解したんですけどここから先進まない。
点数のfor文の中、外で科目別の作ろうとしてもうまく出ないです。

名前 国語 算数 理科 社会 英語 合計 平均
伊藤 52 77 92 65 67 353 70
山田 2 17 32 54 37 142 28
佐藤 61 14 76 72 37 260 52
吉田 79 72 55 57 90 353 70
上野 86 63 18 91 38 296 59
合計 280 243 273 339 269
平均 56 48 54 67 53

こうしたいのは山々なんですけど苦戦しすぎてやる気なくす。
何回もすみません。

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

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

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

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

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

m.ts10806

2021/07/02 23:04

デバッグ覚えた方が他人に聞くより早く解決できますね。
dodox86

2021/07/03 12:17

[2021/07/03 19:22]の質問編集を読んで: > ただ科目ごとの合計が求め方がやっぱりでません。 > 合計の出し方は理解したんですけどここから先進まない。 現時点で既に2つの回答をいただいていますが、それらを読ませていただいても理解できないということでしょうか。 (科目は縦方向で足せばよいということなのですが) いただいた回答のそれぞれについて、分からない点を具体的に改めて聞くか質問に追記した方が良いように思います。そうでないと、これ以上新しい回答をもらってもやはり理解できない可能性があります。
guest

回答2

0

ベストアンサー

原因について

① : iで回ってるforループは人の名前が基準だと思いますが、常にtotal1average1を使って出力している為

② : 教科の合計は、jが教科基準ですね。なので、jを固定にして、iで回した結果の和になります。

解決の考え方

ここまで二次元配列でごり押したのであれば、紙に表を書いて
配列の何処に誰の教科の点数が入っているのかを把握した方が解決出来そうですね。

i\j01234
0伊藤,国語伊藤,算数伊藤,理科伊藤,社会伊藤,英語
1山田,国語山田,算数山田,理科山田,社会山田,英語
2佐藤,国語佐藤,算数佐藤,理科佐藤,社会佐藤,英語
3吉田,国語吉田,算数吉田,理科吉田,社会吉田,英語
4上野,国語上野,算数上野,理科上野,社会上野,英語

①について

伊藤さんの合計は、上の表なら横に見た時ですね。
つまり、i=0の時に0<=j<5の和を求めれば良いです。
平均は、合計の割り算なので特にいう事もないですね。

②について

①と似たような考えで、教科は縦に見た時になりますね。
例えば国語の合計を求めたいなら、j=0の時に0<=i<5の和を求めれば良いわけです。

蛇足(難しそうならスルーで)

toral1average1のように、他が配列で扱っているのにここだけただの変数なのでプログラムを書きにくいです。
5x7配列にして、j=5の時を合計、j=6の時を平均にするのもありかなと思いました。

最も、人の名前と各教科の点数を持つクラスを作った方が画面表示は楽に実装できそうではありますが、コードを見る限り、まだそこまで学習が進んでなさそうに思えるので、クラスを作って云々はもう少しレベルアップしてからの方が良いかも知れませんね。

頑張ってください。

投稿2021/07/02 18:36

neonemo

総合スコア191

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

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

0

前回の続きですね。

まず、合計を算出するには、

合計= a[0][2] + a[1][2] + a[2][2] + a[3][2] + a[4][2]

のような感じだと書きましたが、

よく見てください。

列に相当する部分は完全固定で、
行に相当する部分は+1していっています。

これって見覚えありませんか?

そう、for文です。

forは『範囲がわかっている場合のループ処理』です。

範囲は0から4まで(5教科なので)ですね。

数直線を使って考えるとわかるはずです。

合計値や平均値は変数に入れるより、
『配列』または『二次元配列』等を使ったほうがいいですよ。

方法は2つあり、

一つは『国語等の点数が入っている二次元配列』にいれる。

その場合は 5教科+合計用+平均用
の(列が)要素数7ですね。

行は人数分。

そうすれば、

arr[i][5] は合計用、arr[i][6]は平均用と考えることができ、

arr[i][5] = arr[i][5] + arr[i][場所]

のように表せる。

もう一つの方法は、『別の配列を2つ用意する』ですね。

total1, total2 ...

のようにするのではなく、

int total[5]; // 5人分

とかみたいに保持する。

でもこれはめんどくさそうな感じがします。

平均とはなんでしょうか。

おそらく、小学校で習うアレだと思います。

定義を調べてください。

そうすると、

平均 = 合計 ÷ 個数

のような感じだったはずです。

合計とはなんでしょうか。

そう、『5教科の合計点数』ですね。

個数とはなんでしょうか。

そう、『教科の個数(= 5)』ですね。

つまり、合計を算出して後から5で割る…のようなかんじになります。

教科ごとの平均も考え方は同じです。

投稿2021/07/02 17:49

BeatStar

総合スコア4962

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問