質問: scanner.nextDouble(); } // 体積を計算するメソッド(要作成) public double computeVolume() { return(4.0 / 3.0 * 3.14 * radius * radius * radius); } // 球体ballと同じ大きさか判定する(要作成) public boolean equalTo(Ball ball) { return false; // 不要ならば削除すること } // 文字列表現を得る(要作成) public String toString() { return ""; // 不要ならば削除すること } } ```
回答: クラスのフィールドとメソッドの使い方が分かればその応用で解決できます。 * Ball(int radius) ------------ 半径radiusの球体を生成する + radiusを書き換えるので、コンストラクタの中でsetRadiusメソッドを呼び出せば解決です。 * Ball(Ball ball) ------------- 球体ballのクローンを生成する + こちらは別のインスタンスから半径を取ってきてradiusを書き換えるので、`ball.getRadius();`で取得したradiusを上のコンストラクタと同様にsetRadiusで書き換えます。 * int getRadius() ------------- 半径を取得する + この演習までの教材に`return`の使い方が載っていたと思いますので、それを参考にしてみましょう。 このサイトの類似QA: 戻り値についてとvoidについて * void setRadius(int radius) -- 半径を設定する + `this`キーワードをうまく使いましょう。 少し発展的な類似QA: 継承したクラスのメンバ変数を差し替えたい * double computeVolume() ------ 体積を計算する + 類似の演習問題サイトのどこかに解答が載っています。 * boolean equalTo(Ball ball) -- 球体ballと同じ大きさか判定する + このインスタンスのradiusとball.getRadius()を比較演算子で比較した結果をreturnしましょう。 * String toString() ----------- 文字列表現「Ball(radius)」を得る + 文字列のフォーマットが分かりませんが、例えば下記のサンプルコードで半径と体積を表現できます。 ``` public String toString() { return String.format("ボールの半径は%d, 体積は%fです。", radius, computeVolume()); } ```