前提・実現したいこと
javaで最高得点の科目名を表示のメソッドを作っています。
最高得点を求めたメソッドを利用して作っています。
発生している問題・エラーメッセージ
なぜか返り値が初期化されたままで、for文とif文の処理がうまくいかず、先頭の国語としか表示されません。
該当のソースコード
java
1 2public class Score { 3 String name; 4 int[] subjects = new int[5]; 5 6 public int getJapanese(){ 7 return subjects[0]; 8 } 9 10 public int getMathmatics(){ 11 return subjects[1]; 12 } 13 14 public int getScience(){ 15 return subjects[2]; 16 } 17 18 public int getSocialStudies(){ 19 return subjects[3]; 20 } 21 22 public int getEnglish(){ 23 return subjects[4]; 24 } 25 26 public void setJapanese(int value){ 27 subjects[0] = value; 28 } 29 30 public void setMaMathmatics(int value){ 31 subjects[1] = value; 32 } 33 34 public void setScience(int value){ 35 subjects[2] = value; 36 } 37 38 public void setSocialStudies(int value){ 39 subjects[3] = value; 40 } 41 42 public void setEnglish(int value){ 43 subjects[4] = value; 44 } 45 46 public int getHighScore(){ //最高得点を求める 47 int max=subjects[0]; 48 for(int high : subjects){ 49 if(max < high){ 50 max = high; 51 } 52 } 53 return max; 54 } 55 56 String getHighScoreSubject(){ //最も点数の高い科目を表示 57 String[] maxsub = {"国語","数学","理科","社会","英語"}; 58 String st = maxsub[0]; 59 for(int j=0; j==subjects.length; j++) { 60 if (getHighScore() == subjects[j]) { 61 st = String.join(",",maxsub[j]); 62 } 63 } 64 return st; 65 } 66 67 68 void getprintInfo(){ //結果の出力 69 System.out.println("氏名:" + name); 70 System.out.println("国語:" + subjects[0] + "点"); 71 System.out.println("数学:" + subjects[1] + "点"); 72 System.out.println("理科:" + subjects[2] + "点"); 73 System.out.println("社会:" + subjects[3] + "点"); 74 System.out.println("英語:" + subjects[4] + "点"); 75 System.out.println("最も点数が高い科目:" + getMaxSubject() + getHighScore() + "点"); 76 }
試したこと
どこが間違っているのかわかりません。
補足情報(FW/ツールのバージョンなど)
氏名や点数の入力は別のクラスで行っています。
最高得点の科目を表示する部分以外はちゃんと実行できます。
とりあえずteratailではソースコードはMarkDown方式でコードブロック化してご提示ください。
ヘルプに書いてありますが、書き方が分からない場合は下記質問の回答も参考にしてください。
https://teratail.com/questions/238564
>編集を受けて
質問者さんが書いている「,,,」はカンマです。
コードブロック化する際に必要なこれ「```」はバッククォートです。
フツーのキーボードならShift+「@」のキーで打てます。
めんどかったらコードを全選択して<code>って書いてるところを押せば早いっす。
すいません直りました。
手間をかけて申し訳ありません。
別に暇なときに指摘してるだけなのでお気になさらず。
多分コード部分的に切り取られてるので極力全部コピペで貼った方が良いっすよ。
回答2件
あなたの回答
tips
プレビュー