🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

2回答

968閲覧

オブジェクトで数字が表示されない

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

1クリップ

投稿2021/02/10 01:32

Javaで、オブジェクトを学習しています。エラーはないのですが、狙い通りに数字が表示されません。原因と改善方法のヒントをお願いいたします。

完成形

----- 1 番目の人のステータス -----

◆【名前】太郎
◆【年齢】20
◆【エネルギー】20
----- 2 番目の人のステータス -----
◆【名前】花子
◆【年齢】20
◆【エネルギー】20

現状

----- 1 番目の人のステータス -----

◆【名前】太郎
◆【年齢】chapter09a.Age@70dea4e
◆【エネルギー】chapter09a.Energy@5c647e05
----- 2 番目の人のステータス -----
◆【名前】花子
◆【年齢】chapter09a.Age@33909752
◆【エネルギー】chapter09a.Energy@55f96302

ソースコード①Main

// Person1のインスタンス DemoPerson person1 = new DemoPerson("太郎"); System.out.println("----- " + DemoPerson.person_num + " 番目の人のステータス -----"); person1.showStatus(); // Person2のインスタンス DemoPerson person2 = new DemoPerson("花子"); System.out.println("----- " + DemoPerson.person_num + " 番目の人のステータス -----"); person2.showStatus();

ソースコード②Person

// フィールド String name; // 名前 Age age; // 年齢 Energy energy; // エネルギー static int person_num = 0; // コンストラクタ(引数が1つバージョン) public DemoPerson(String name) { this.name = name; this.age = new Age(); this.energy = new Energy(); person_num++; } // コンストラクタ(引数が2つバージョン) public DemoPerson(String name, Age age) { this.name = name; this.age = age; this.energy = new Energy(); person_num++; } // コンストラクタ(引数が2つバージョン) public DemoPerson(String name, Energy energy) { this.name = name; this.age = new Age(); this.energy = energy; person_num++; } // コンストラクタ(引数が3つバージョン) public DemoPerson(String name, Age age, Energy energy) { this.name = name; this.age = age; this.energy = energy; person_num++; } // ステータスを表示する void showStatus() { System.out.println("◆【名前】" + this.name); System.out.println("◆【年齢】" + this.age); System.out.println("◆【エネルギー】" + this.energy); }

ソースコード③Age

public class Age { int age; public Age() { this.age=20; } public Age(int age) { this.age=age; } }

ソースコード④Energy

public class Energy { int energy; public Energy() { this.energy=20; } public Energy(int energy) { this.energy=energy; } }

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

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

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

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

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

guest

回答2

0

ベストアンサー

Ageと、Energyは、オブジェクト型なのでtoStringを実装する必要があります。

java

1public static void main(String[] args) { 2 Age age = new Age(); 3 Energy energy = new Energy(); 4 5 System.out.println(age); 6 System.out.println(enerty); 7}

どちらも20が表示されないことを確認できるはずです。

【Qiita】toString()をオーバーライドして自身の情報を親切に伝える

上記を参考に、Age、Energyの内部のintを表示するように、toStringを実装(オーバーライド)してください。

投稿2021/02/10 02:59

momon-ga

総合スコア4826

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

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

0

AgeクラスやEnergyクラスを表示しています。
クラスはただの箱です。実際に値が入っているのは
AgeクラスのageやEnergyクラスのenergyですよね?

カプセル化、アクセッサの理解が不足していそうなので、
そのあたりの理解を深めると良いと思います。

投稿2021/02/10 01:44

Luice

総合スコア771

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問