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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Java

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

Q&A

解決済

3回答

2629閲覧

java カプセル化 メソッドを参照したい

suzu7

総合スコア3

Java

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

0グッド

0クリップ

投稿2020/06/27 08:57

編集2020/06/27 09:31

前提・実現したいこと

javaの課題で、カプセル化のプログラミングを作っているのですが、メソッドをうまく参照できません。

下記が課題文です。
***
成績を表現するクラスGradeをカプセル化の定石に従った上で作成してください。

属性は名前(name)、得点(score)を持ちます。
コンストラクタは以下を定義してください。 - 引数として名前、得点を指定 - 引数を指定しない場合にはインスタンス化することはできない

メソッドは成績を判定する「judge()」を持ち、引数はなしで、戻り値は成績(AA〜C又は不合格)です。得点が90以上はAA、80以上はA、70以上はB、60以上はC、60未満は不可とします。

Gradeクラスの定義が完了したら、mainメソッドを持つMainクラスで、以下のデータを使った実行結果と同じになるよう処理を作成してください。
伊藤 60
鈴木 88
佐藤 40
中山 74
池田 95
池山 80

【実行結果】
伊藤:C
鈴木:A
佐藤:不可
中山:B
池田:AA
池山:A

発生している問題

成績をAA~不可で表示させたいのですが、そのまま数字で表示されてしまいます。 伊藤:60 鈴木:88 佐藤:40 中山:74 池田:95 池山:80

該当のソースコード

package kadai10_7; public class Grade { private String name; private int score; private String grade; public Grade(String name,int score) { this.name=name; this.score=score; } void judge(){ if(score>=90) { grade="AA"; }else if(score>=80){ grade="A"; }else if(score>=70) { grade="B"; }else if(score>=60) { grade="C"; }else { grade="不可"; } } String getName() { return name; } int getScore() { return score; } void setName() { this.name=name; } void setScore() { this.score=score; } }
package kadai10_7; public class Main { public static void main(String[] args) { Grade grade1=new Grade("伊藤",60); Grade grade2=new Grade("鈴木",88); Grade grade3=new Grade("佐藤",40); Grade grade4=new Grade("中山",74); Grade grade5=new Grade("池田",95); Grade grade6=new Grade("池山",80); grade1.judge(); grade2.judge(); grade3.judge(); grade4.judge(); grade5.judge(); grade6.judge(); System.out.println(grade1.getName()+":"+grade1.getScore()); System.out.println(grade2.getName()+":"+grade2.getScore()); System.out.println(grade3.getName()+":"+grade3.getScore()); System.out.println(grade4.getName()+":"+grade4.getScore()); System.out.println(grade5.getName()+":"+grade5.getScore()); System.out.println(grade6.getName()+":"+grade6.getScore()); } }

教科書や入門書、いろんなサイトも見たのですが、まだカプセル化や色々なことが理解できていないと思います。見当違いなコードを書いてるかもしれません。ご教授いただければ幸いです。

###追記
回答ありがとうございます!
下記のように直しましたが、まだ数値のまま表示されてしまいます。

String judge(){ if(score>=90) { grade="AA"; }else if(score>=80){ grade="A"; }else if(score>=70) { grade="B"; }else if(score>=60) { grade="C"; }else { grade="不可"; } return grade; }

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

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

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

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

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

momon-ga

2020/06/27 13:23

貴方が表示したいのは、 int getScore() ですか? String judge() ですか?
suzu7

2020/06/28 02:33

String judge() でした!!judge()メソッドにばかり気を取られていました。 教えていただいてありがとうございます!
guest

回答3

0

メソッドは成績を判定する「judge()」を持ち、引数はなしで、戻り値は成績(AA〜C又は不合格)です。

って書いてあるのに、judge()の戻り値がvoidです
そこから間違えてます


表示するところでjudge()呼んでないんだからそりゃ表示されませんよね

投稿2020/06/27 09:01

編集2020/06/27 09:52
ozwk

総合スコア13553

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

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

0

「メソッドは成績を判定する「judge()」を持ち、引数はなしで、戻り値は成績(AA〜C又は不合格)です。得点が90以上はAA、80以上はA、70以上はB、60以上はC、60未満は不可とします。」
になっていません。
戻り値が指定されているのにvoidになっています。

投稿2020/06/27 09:04

YT0014

総合スコア1750

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

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

0

ベストアンサー

"System.out.println(grade1.getName()+":"+grade1.getScore());"を"System.out.println(grade1.getName()+":"+grade1.judge());"になおしてください。grade2以降も同様です。

投稿2020/06/27 11:15

anndonut

総合スコア667

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

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

suzu7

2020/06/28 02:30

回答ありがとうございます。無事に動作しました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問