質問: Test2.hikaku(a, b); // コンソールに表示 System.out.println(); } } ```
回答: エラーは発生しておらず、実行自体はできているけれど意図した値が取得できない状況を想定して回答します。 ※「コンパイルエラー」や「実行時エラー」が発生している場合は質問文にエラー内容をコピペして追記をお願いします。 > > 1.Testmainのmainメソッド内でTest1のインスタンス2つとTest2のインスタンスを作成する。 > > > Test2のインスタンスを作成していませんが、`hikaku`メソッドがstaticなので動作しています。 要件を満たしているかご確認ください。動いていればOKならば問題ありません。 > > 2.Test2のhikakuメソッドに作成した2つのTest1インスタンスを渡す。 > > > できてます。 > > 3.hikakuメソッド内で受け取った2つのインスタンスのaとbの合計値を比較し、大きい方を戻り値として返す。aとbの合計が一緒の場合は、先に受け取った方を返す。 > > > 質問文のコードには「aとbの合計値が一緒」かどうかを判別するロジックのみ実装されています。 条件式を追加しましょう。 > > 4.Testmainメソッド内で変数test3を宣言し、hikakuメソッドの戻り値を受け取る。 > > test3のaとbをそれぞれコンソールに出力する。 > > > Object型のtest3フィールドはいらない気がしますが、上段の処理は大体できてます。 メソッド内で変数`test3`の代わりに変数`f`が宣言されています。 下段は惜しいところです。 `System.out.println();`の記述ではコンソールに改行を出力するだけです。 `System.out.println(f.getA());`に書き換えると変数`f`のフィールド`a`をコンソールに出力します。 `System.out.println(a.getB());`に書き換えると変数`a`のフィールド`b`をコンソールに出力します。(変数名がまぎらわしいことになっています) つまり「変数`f`の`a`をコンソールに出力する」記述を「test3のaとbをそれぞれコンソールに出力する」記述に書き換えることが課題の要点になりそうです。 > > また、特に私が頭を悩ませているのは、メソッドの戻り値を他のクラスのへ受け渡す際の、 > > return の書き方に悩んでおります。 > > 複数のreturnがある場合は、配列に格納して返すのが、一般的なのでしょうか? > > > 複数のreturnがある場合は、配列に格納するか**インスタンスのフィールドに格納**して返すのが一般的です。 お悩みの点は「aとbの二変数を両方返す方法が分からない」のだと予想しますが、すでに`hikaku`メソッドの戻り値として`Test1`クラスのインスタンスを返しているので(`hikaku`メソッドを正しく実装すれば)インスタンスの`a`と`b`フィールドの二変数を取得することができます。 `Test1`クラスのフィールドはprivate変数として隠ぺいされていますが、`getA`メソッドなどのgetterを使って他のクラスからpublicアクセスできるようになっています。 『クラス』『インスタンス』『変数名』『メソッド』あたりの使い方がこんがらかってしまっているかもしれません。 上記の単語を意識して教材のテキストや過去の演習用コードを読み返せば、あと少しで正解にたどり着けるコードに見えます。 がんばってください!