老親介護に悩む30~60代の方へ
老親介護ねっと[老人ホーム編]
トップ 老人ホームの選び方 介護関連ニュース 新規オープンホーム情報 老人ホーム取材レポート お問い合わせ リンク集 Q&A

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

素人目に見事なプログラム。

public class test11 {

public static void main(String[] args) {

int[] [] points = new int[4][10];

points[0] = new int[] { 27, 53, 82, 77, 37, 61, 84, 72, 25, 91 };
points[1] = new int[] { 54, 76, 96, 39, 18, 45, 89, 92, 68, 88 };
points[2] = new int[] { 54, 69, 81, 57, 49, 67, 76, 81, 67, 89 };

for (int i = 0; i < points[0].length; i++) {
points[3][i] = points[0][i] + points[1][i] + points[2][i];
}

for (int i = 0; i<points[0].length; i++) {
System.out.println("出席番号" + (i + 1) + "番の生徒の成績");
System.out.println("国語 :" + points[0][i]);
System.out.println("数学 :" + points[1][i]);
System.out.println("英語 :" + points[2][i]);
System.out.println("合計 :" + points[3][i]);
System.out.println("-----");
}
}
}


実行結果

C:\WORK>javac test11.java

C:\WORK>java test11
出席番号1番の生徒の成績
国語 :27
数学 :54
英語 :54
合計 :135
-----
出席番号2番の生徒の成績
国語 :53
数学 :76
英語 :69
合計 :198
-----
出席番号3番の生徒の成績
国語 :82
数学 :96
英語 :81
合計 :259
-----
出席番号4番の生徒の成績
国語 :77
数学 :39
英語 :57
合計 :173
-----
出席番号5番の生徒の成績
国語 :37
数学 :18
英語 :49
合計 :104
-----
出席番号6番の生徒の成績
国語 :61
数学 :45
英語 :67
合計 :173
-----
出席番号7番の生徒の成績
国語 :84
数学 :89
英語 :76
合計 :249
-----
出席番号8番の生徒の成績
国語 :72
数学 :92
英語 :81
合計 :245
-----
出席番号9番の生徒の成績
国語 :25
数学 :68
英語 :67
合計 :160
-----
出席番号10番の生徒の成績
国語 :91
数学 :88
英語 :89
合計 :268
-----

いつも大変お世話になっております。

教えてもらってばかりで恐縮です。

上記、Javaプログラムの件。

どうしてこうなるのか解りません。

どなたか解説してくれませんか?

真夜中にすみません。

ご回答のほど宜しくお願い申し上げます。

投稿日時 - 2018-07-08 05:31:34

QNo.9516267

困ってます

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

絶賛するほどの内容ではありません。
数値の配列変数を宣言して、そこへ定数を代入してforループでコンソールへ出力していますが予め別のforループで各自の3科目の合計点を配列変数へ代入しています。
出来れば出席番号ではなく名前(生徒名)で出力した方が良いでしょう。
私なりに修正すると下記のようになります。

public class test11 {
public static void main(String[] args) {
String str[] = new String[] {"国語","数学","英語","合計"};
String name[] = new String[] {
"斎藤","中村","山本","野口","川口","村野","渡辺","小林","桜井","島田"};
int[][] points = new int[][] {
{ 27, 53, 82, 77, 37, 61, 84, 72, 25, 91 }, //国語の得点
{ 54, 76, 96, 39, 18, 45, 89, 92, 68, 88 }, //数学の得点
{ 54, 69, 81, 57, 49, 67, 76, 81, 67, 89 }, //英語の得点
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } //3科目の合計
};
for (int i = 0; i<points[0].length; i++) {
System.out.println(name[i] + "さんの成績");
for (int j = 0; j < 4; j++) {
if (j < 3) points[3][i] = points[3][i] + points[j][i];
System.out.println(str[j] + " :" + points[j][i]);
}
System.out.println("-----");
}
}
}

投稿日時 - 2018-07-08 22:18:48

お礼

ご回答誠にありがとうございます。

流石ですね。

基本を入念にやっていこうと思います。

今後ともよろしくお願いいたします。

投稿日時 - 2018-07-08 23:00:58

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

>回答No.2 amanojaku1

>//配列要素はゼロ・スタートです。
>for (int i = 0; i<eto.length; i++) {
>System.out.println(i + ":" + eto[i]);
>}

↑「eto」には12個の配列要素が定義されています。
ですので「eto.length」は12です。

>for (int i = 0; i<eto.length; i++) {

↑このforループは「i」が「0~11」までループしている事に注意して下さい。
条件式「i<eto.length」は「iはeto.length未満の場合に真」です。
この場合 「eto.length」は12なので「iは12未満の場合に真」です。
よって、このforループは「i」が「0~11」までループします。

投稿日時 - 2018-07-08 11:49:27

お礼

お礼コメント
ご回答誠にありがとうございます。

流石ですね。

基本を入念にやっていこうと思います。

今後ともよろしくお願いいたします。

投稿日時 - 2018-07-08 22:58:41

ANo.2

>forについて、調べてみようと思います。

文章を読んでイマイチ イメージが掴めない場合は簡単なプログラムを作ってみると良いでしょう。

//クラス名は自分のプログラムのクラス名に変更して下さい。
public class test001 {

public static void main(String[] args) {

String[] eto = new String[] { "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥", };

//配列要素はゼロ・スタートです。
for (int i = 0; i<eto.length; i++) {
System.out.println(i + ":" + eto[i]);
}
}
}

投稿日時 - 2018-07-08 11:34:23

お礼

ご回答誠にありがとうございます。

流石ですね。

基本を入念にやっていこうと思います。

投稿日時 - 2018-07-08 22:57:16

ANo.1

javaはやったことありませんが、書いてあることはハッキリわかるので回答します。

pointsと言う二次元配列(4行10列)を作って
配列の一行目(points[0])に国語の点数をセット
以下、二行目に数学、三行目に英語

forループで国語 数学 英語の各列を合計して四行目にセット

forループで、各データを出力

何も難しいことはやってませんよ。初歩中の初歩です。

投稿日時 - 2018-07-08 07:11:18

お礼

ご回答誠にありがとうございます。

forについて、調べてみようと思います。

投稿日時 - 2018-07-08 07:48:22