前提・実現したいこと
最近javaを学習しまず実践してみようということで課題を出されたのですがうまくいきません。以下のように実現したいのですが点数部分を出力するにはコントラクタで定義なしでやることとあるのでそこでつまずきました。そこでどうすればいいのかを有識者の方々のお力を借りたく思い、投稿させていただきます。
■Aさんの成績
国語は100
数学は90
理科は80
社会は45
英語は
81
一番良かった教科…国語:100
一番悪かった教科…社会:45
平均点… 80
■Bさんの成績
国語は60
数学は70
理科は40
社会は60
英語は
90
一番良かった教科…a:
一番悪かった教科…
平均点…
■Cさんの成績
国語は30
数学は80
理科は70
社会は90
英語は
80
一番良かった教科…a:
一番悪かった教科…
平均点…
■Dさんの成績
国語は80
数学は70
理科は90
社会は70
英語は
50
一番良かった教科…理科:90
一番悪かった教科…
平均点…
■Eさんの成績
国語は80
数学は60
理科は80
社会は100
英語は
50
一番良かった教科…社会:100
一番悪かった教科…英語:50
平均点…
発生している問題・エラーメッセージ
うまく数字の代入部分が表示されないこと 以下のプログラムだと0しか代入されてない
該当のソースコード
/
- 各自の成績に関する情報を保持し、各教科の得点や平均点などを出力する。
- 動かされるほう
/
public class Myscore{
/*
* 教科名
*/
static final String[] SUB_NAME = {"国語","数学","理科","社会","英語"};
/** * 学生の名前 */ private String name; /** *各得点の保持 */ private int[] keep = new int[5]; /** * 平均点 */ private double ave; /** * 最高得点 */ private int highScore; /** * 最低得点 */ private int lowScore; /** * 最高得点の教科 */ private String highSub; /** * 最低得点の教科 */ private String lowSub; /** * 引数なしのコンストラクタ */ public Myscore(){ super(); } /** * 名前をフィールドに代入する。 * @param name 学生の名前 */ public Myscore(String name){ this.name = name; } void printInfo(){ System.out.println("■" + this.name + "さんの成績\n\n " ); System.out.println("国語は" + keep [0] ); System.out.println("数学は" + keep [1]); System.out.println("理科は" + keep [2]); System.out.println("社会は" + keep [3]); System.out.println("英語は \n" + keep [4]); System.out.println("一番良かった教科…" + "a:" ); System.out.println("一番悪かった教科…"); System.out.println("平均点… \n\n\n"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int[] getKeep() { return keep; } public void setKeep(int[] keep ) { this.keep = keep; } public double getAve() { return ave; } public void setAve(double ave) { this.ave = ave; } public int getHighScore() { return highScore; } public void setHighScore(int highScore) { this.highScore = highScore; } public int getLowScore() { return lowScore; } public void setLowScore(int lowScore) { this.lowScore = lowScore; } public String getHighSub() { return highSub; } public void setHighSub(String highSub) { this.highSub = highSub; } public String getLowSub() { return lowSub; } public void setLowSub(String lowSub) { this.lowSub = lowSub; } public static String[] getSubName() { return SUB_NAME; }
}
public class ReportCardTest {
public static int[] keep;
/**
- 5人の学生のMyScoreオブジェクトを生成し、テストの得点を各学生のオブジェクトに与える。
- ただし、5人の学生のオブジェクトは配列で管理すること。
*/
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Myscore a = new Myscore ("A");
a.printInfo();
Myscore b = new Myscore ("B");
b.printInfo();
Myscore c = new Myscore ("C");
c.printInfo();
Myscore d = new Myscore ("D");
d.printInfo();
Myscore e = new Myscore ("E");
e.printInfo();
keep = new int[] {100,80,20,55,76}; a.printInfo(); }
}
試したこと
ない知恵を振り絞って本を見ながら何度か試行錯誤しましたが配列が代入されない
回答1件
あなたの回答
tips
プレビュー