Java初心者によるN人の成績入力プログラムの作成

このQ&Aのポイント
  • Java初心者がN人の名前と数学・英語のテストの点数を入力するプログラムを作成できません。JDK6を使用しています。
  • プログラムの実行結果は、数学の最高点をとった人と英語の最高点をとった人、数学の点数が平均点以上の人、英語の点数が平均点以上の人、2科目とも平均点以上の人、1科目でも40点未満の人です。
  • 誰かプログラムを解いていただけませんか?
回答を見る
  • ベストアンサー

javaについての質問です

javaについての質問です N人分の名前とそれぞれの数学と英語のテストの点数を入力するプログラムを作成せよ。 という問題ですが、まだjava初心者ですので、何回やってもできませんでした。 使っているのはJDK6だと思います。 実行結果は 何人分の点数を入力しますか?3 1 人目のデータ 名前:Sato 数学:53 英語:22 2 人目のデータ 名前:Tanaka 数学:22 英語:89 3 人目のデータ 名前:Yamada 数学:53 英語:67 数学の最高点をとった人 Sato さん(数学:53 英語:22) Yamada さん(数学:53 英語:67) 英語の最高点をとった人 Tanaka さん(数学:22 英語:89) 数学の点数が平均点(42.666666666666664)以上の人 Sato さん(数学:53 英語:22) Yamada さん(数学:53 英語:67) 英語の点数が平均点(59.333333333333336)以上の人 Tanaka さん(数学:22 英語:89) Yamada さん(数学:53 英語:67) 2 科目とも平均点以上の人 Yamada さん(数学:53 英語:67) 1 科目でも40 点未満の人 Sato さん(数学:53 英語:22) Tanaka さん(数学:22 英語:89) になります。誰か解いてくださいお願いします。

  • TRUD
  • お礼率100% (2/2)
  • Java
  • 回答数2
  • ありがとう数7

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

  • ベストアンサー
回答No.1

機能を分けて作りましょう。 class A(最高得点判断) 数学の最高点をとった人判断メソッド 英語の最高点をとった人メソッド class B(平均点判断) 数学の点数が平均点メソッド 英語の点数が平均点メソッド class C(平均点以上、40点未満判断) 2 科目とも平均点以上の人メソッド 1 科目でも40 点未満の人メソッド 表示用クラスD(上記機能の処理結果を表示するクラス) system.out.printli("~~~~");

TRUD
質問者

お礼

ありがとうございます。 課題ではないのでゆっくりとできますが、 import java.io.*; public class Prag1 { public static void main(String args[]) throws IOException { System.out.println("人数を入力して下さい."); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); int test[] = new int[num]; for(int i=0; i<num ; i++){ System.out.println((i+1) + "人目のデータ"); String name=br.readLine(); String str1=br.readLine(); int tmp = Integer.parseInt(str1); test[i] = tmp; String str2=br.readLine(); int tmp1 = Integer.parseInt(str2); test[i] = tmp1;     System.out.println("名前 : "+ name); System.out.println("数学 : "+ tmp); System.out.println("英語 : "+ tmp1); } } } 最初にここまでつくって見ました。 ですがここで止まってしまいました。原因はうまく出力できないことなど ありますがどうしたらいいのでしょうか?

その他の回答 (1)

  • suzukiyo
  • ベストアンサー率26% (11/42)
回答No.2

一人目、二人目・・・と同じ構造をしていることから「compositeデザインパターン」を適用できるのではと思いました。 課題なので、直接回答はしませんが、ヒントとなるページのURLを記載します。 参考にしてみてください。

参考URL:
http://www.rarestyle.net/main/patterns/composite.aspx
TRUD
質問者

お礼

ありがとうございます。 何とか理解しようとしましたが、何度読んでもよく分かりませんでした。 なので、作ってみて実行したいと思います。

関連するQ&A

  • コーディングフローチャート

    下記のコーディングのフローチャートの書き方が分かりません。 どうか教えてください。 試験の成績データを読み込んで、ひとりの生徒分を取りまとめて生徒成績レコードとして出力します。 入力ファイルは学生番号順に並んでいます。 試験成績データは、1科目ごとに試験を受けた結果が入っています。 1.ファイルレイアウト ・入力ファイル  学生番号  X(004) 科目コード X(002) ※1 点数  9(003) ※2 ※1 科目コード 01:国語 02:数学 03:英語 04:科学 05:歴史 ※2 点数 0~100までの範囲 2.生徒成績データ ・出力ファイル  学生番号 X(004) 受験科目数 9(001)※1 最高点 9(003)※2 最低点 9(003)※3  平均点 9(003)※4  国語点数 9(003)※5  数学点数 9(003)※5  英語点数 9(003)※5 科学点数 9(003)※5 歴史点数 9(003)※5 ※1 試験成績データの同じ学生番号の人が受けた試験の数   国語、英語、歴史の試験を受けた場合は入力レコード数は   3レコードとなり受験科目数は3となる。 ※2 最高点   試験成績データの点数が一番良い点数 ※3 最低点   試験成績データの点数が一番悪い点数 ※4 平均点   試験を受けた点数の平均 ※5 各科目点数   試験成績データの科目コードより該当の科目へ点数を設定する

  • 構造体から平均点を求める方法

    構造体が(名前、数学の点数、英語の点数、理科の点数)という形で、100人分のデータがあった場合。 この構造体を関数で受け取り、各科目の平均点をパラメタで返し、全体の平均を復帰値にするにはどのような関数にすれば良いのでしょうか。参考のソースを示していただけると助かります。よろしくお願いします。

  • C言語のプログラムについて質問です。

    C言語のプログラムについて伺いたいことがあるんですが5人くらいの名前、数学、英語、国語の点数を入力して各教科の最高点、最低点、平均点、それぞれの数+英+国の合計点を表示するプログラムを構造体を使って作りたいと思っています。 もしよろしければ事細かに教えていただけないでしょうか。 よろしくお願いします。

  • 250人の学生が、英語、国語、数学のテストを受

    250人の学生が、英語、国語、数学のテストを受けた。英語では110人、国語では120人、数学では112人が平均点以上であった。また3科目すべてが平均点未満の者は50人、1科目だけ平均点以上だった者は94人であった。このとき3科目すべてが平均点以上の者の数はいくらか。       原文どうり書いてみました。回答は36人になるそうです。解法がわかる方、よろしくお願いします。 

  • c言語 構造体

    大学での内容なのですが,『名前,数学の点数,英語の点数,国語の点数を格納できる(メンバに持つ)構造体を宣言し,この構造体の配列を用いて,3人分の情報をキーボードから入力後,各科目の平均点を画面に表示するプログラムを作成せよ.』という問題で,自分なりに作ってみたのですがうまくいきません.どなたか教えていただけませんか? 一応自分で作ったものを下に載せておきます. ================================================================ #include <stdio.h> #include <string.h> struct test { char name[20]; int sugaku; int eigo; int kokugo; }; int main(void) { struct test suzuki; int (suzuki.sugaku), (suzuki.eigo), (suzuki.kokugo); strcpy(suzuki.name, "Suzuki"); printf("氏名:鈴木 一馬\n"); printf("数学:"); scanf("%d", &suzuki.sugaku); printf("英語:"); scanf("%d", &suzuki.eigo); printf("国語:"); scanf("%d", &suzuki.kokugo); struct test tanaka; int tanaka.sugaku, tanaka.eigo, tanaka.kokugo; strcpy(tanaka.name, "Tanaka"); printf("氏名:田中 二郎\n"); printf("数学:"); scanf("%d", &tanaka.sugaku); printf("英語:"); scanf("%d", &tanaka.eigo); printf("国語:"); scanf("%d", &tanaka.kokugo); struct test yamamoto; int yamamoto.sugaku, yamamoto.eigo, yamamoto.kokugo; strcpy(yamamoto.name, "Yamamoto"); printf("氏名:山本 三弘\n"); printf("数学:"); scanf("%d", &yamamoto.sugaku); printf("英語:"); scanf("%d", &yamamoto.eigo); printf("国語:"); scanf("%d", &yamamoto.kokugo); printf("数学の平均点は%dです。\n", ((suzuki.sugaku + tanaka.sugaku + yamamoto.sugaku) / 3.0)); printf("英語の平均点は%dです。\n", ((suzuki.eigo + tanaka.eigo + yamamoto.eigo) / 3.0)); printf("国語の平均点は%dです。\n", ((suzuki.kokugo, + tanaka.kokugo + yamamoto.kokugo) / 3.0)); return (0); } ================================================================

  • tiny basicでプログラム作成

    次の問題のプログラムをtiny basicで作成してみてくだい。 理科、数学、国語、音楽、体育の点数を読み込み、5科目の平均点を計算し、平均点が60点以上で合格、60点以下なら不合格と表示するプログラムをつくりなさい。 各科目の点数は、理科50点、数学80点、国語40点、音楽60点、体育64点とする。

  • フィルタをかけた後の計算

    エクセルでフィルタをかけた後に 偏差値を計算したいのですが… 例えば 名前 科目 点数   分散 偏差値 A君 国語 100点 数値    数字 B君 数学  80点   数値    数字 C君 数学  90点   数値    数字 ・・・・ 平均      90点(=Average(A1:A3)) で科目でたとえば国語でフィルタをかけると 平均点が90点のまんまでもとのデータが残ってしまいます。 それは(=Averrage(A1:A3)のまんまで・・・ 全体の科目の偏差値のままになってしまいます。 フィルタをかけるとそのフィルタリングされた 行の中の中だけで平均点や偏差値をだしたいのです。 こういう場合はどうしたらいいのでしょうか? それとも根本的にやりかたが間違っているのでしょうか? わかる方に教えていただけるとありがたいです。 よろしくお願いします!!

  • <未解決>Excel(エクセル)でテストの結果をマクロで個人票にしたいんですが…

    エクセルのマクロを使って、下記のように個人票を作りたいです。いろいろ参考になりそうな同類の質問もあるのですが、私は初心者で、自分のして欲しいものと微妙に違うので書き換えられないので質問しました。詳細を書きます。分かりやすいように学校のテスト風に書きます。 <元の物> │1学期中間テスト│ │氏名│国語│英語│数学│日史│・・・│合計│平均│国順│英順│数順│日順│・・・│総合│ │人A│70│80│90│85│・・・│800 │88.9│3  │5  │ 2 │ 3│・・・│1 │ │人B│60│70│80│75│・・・│790 │87.9│5 │7  │ 4 │ 4│・・・│2 │ │・ │・ │・ │平均│55│60│70│64│・・・│515│578.2│ <マクロ使用後> │1学期中間テスト│空白セル×2│人A│ │  │国語│英語│数学│日史│・・・│合計│平均│ │点数│70│80│90│85│・・・│800 │88.9│ │順位│3  │5  │ 2 │ 3│・・・│1 │ │平均│55│60│70│64│・・・│515 │57.2│ │ │1学期中間テスト│空白セル×2│人B│ │  │国語│英語│数学│日史│・・・│合計│平均│ │点数│60│70│80│75│・・・│790 │87.9│ │順位│5 │7  │ 4 │ 4│・・・│2 │ │平均│55│60│70│64│・・・│515│578.2│ ━以上━ (1)テスト名、科目名、人名等は毎回変わるのでそれに対応できるように。 (2)また、科目数、人数も変わるのでそれにも対応できるように。 (3)最初に、│テスト名│を入れ、2つ空白セルを作り、│名前│を入れる。 (4)次の行にセルを1つあけて、順に科目名、合計、平均 (5)次に「点数」といれて、その後に各人の点数 (6)次に「順位」といれて、その後に各人の順位 (7)最後に「平均」といれて、科目ごとの全体の平均 (8)人と人の間に空白の行1行 それぞれの合計、平均、科目ごとと総合の順位と科目ごとの平均はすでに算出されているものとしてつくっていただければ結構ですが、もしできれば、それも作ってくれるマクロだとなおさら嬉しいです。ちなみに│ │と「 」の違いは、前のセルを引用してくるか、その文字を新しく挿入するかの違いです。技術的に可能か不可能かも私にはわからないので、もし不可能ならばそのように教えてください。 お忙しいとは思いますが、よろしくお願いします。

  • 複数テーブルをまとめてソート

    たとえば次のような、都道府県ごとのテーブルがあり、 ID、名前、得点の列があるとします。 テーブル1(テーブル名:tokyo) ID NAME SCORE 1 yamada 89 2 tanaka 45 テーブル2(テーブル名:osaka) ID NAME SCORE 1 sato 65 2 suzuki 22 これらのテーブルをまとめて、全国で得点が上位順に並べたいと 思っております。また、結果にはどのテーブルに所属するものかを 判別する列を追加したいのですが、どういう文を記述したらよいのでしょうか? 望みの結果は次のようなものです。 NAME SCORE TABLE_NAME yamada 89 tokyo sato 65 osaka tanaka 45 tokyo suzuki 22 osaka よろしくお願いします。

    • ベストアンサー
    • MySQL
  • プログラミングの構造体の課題が出たんですが・・・

    プログラミングの構造体の課題が出たんですがさっぱりわかりません。どなたかわかる方お願いします。 次の仕様に従って、生徒の科目得点から平均点と評価を求め、評価結果の画面を表示するプログラムを作成しなさい。 与えられた仕様 手順 1. プログラムに読み込むデータファイル名は、コマンドラインで入力する。 2. データファイルには、以下のような形式で1行目に学生数、2行目に項目名(学生番号、国語、数学、理科、英語)が、3行目以降に学生番号と各科目点数が格納されている。 5 学生番号 国語 数学 理科 英語 1001 85 74 63 90 1002 78 65 70 62 1003 89 92 88 76 1004 32 48 66 15 1005 92 76 81 98 3.下記の 構造体を用いてデータの格納を行い、平均点と評価も格納できるようにすること。 struct seiseki { /* 成績データ */ int no; /* 学生番号 */ int ten[4]; /* 点数 */ double avg; /* 平均点 */ char hyouka; /* 評価 */ }; 4. 処理手順は、次のとおりとする。 1. ファイルからデータを読み込むこと。 2. 各人の 4科目の平均点を求め、構造体に格納すること。 3. 各人の評価を求め、構造体に格納すること。尚、4段階の評価基準は上記のとおり。 平均点 評価 80点以上 'A' 70点以上 80点未満 'B' 60点以上 70点未満 'C' 60点未満 'D' データファイルは空白で区切られています。 こうすれば解けるよ、とかこのサイト見てやればできるよ等の 回答ではなく、この問題の答えを教えてくれたらうれしいです。 自分で理解してやらないと~とか考えてやらないと~等の回答もしないでください。 わがまま言ってすいませんが、わかる方お願いします。

専門家に質問してみよう