

下のようなプログラムを作りたいのですがうまくいきません。どうしてもわからないのでどなたか解答を教えてくれませんか。  
よろしくお願いしますm(__)m

[code]

    /*
     * Ex07
     * 球体を表すクラス Ball を作成せよ。
     * 具体的には、以下のコンストラクタとメソッドを作成せよ。
     *     Ball(int radius) ------------ 半径radiusの球体を生成する
     *     Ball(Ball ball) ------------- 球体ballのクローンを生成する
     *     int getRadius() ------------- 半径を取得する
     *     void setRadius(int radius) -- 半径を設定する
     *     double computeVolume() ------ 体積を計算する
     *     boolean equalTo(Ball ball) -- 球体ballと同じ大きさか判定する
     *     String toString() ----------- 文字列表現「Ball(radius)」を得る
     *
     * ただし、フィールドとして int radius を使用すること。
     */
    import java.util.Scanner;
    class Ball {
    
        // フィールド（変更禁止）
        private int radius; // 半径
    
        // コンストラクタ（変更禁止）
        public Ball() {
        }
    
        // コンストラクタ（要作成）
        public Ball(int radius) {
    
        }
    
        // コンストラクタ（要作成）
        public Ball(Ball ball) {
    
        }
    
        // 半径を取得するメソッド（要作成）
        public int getRadius() {
    
            return -1; // 不要ならば削除すること
        }
    
        // 半径を設定するメソッド（要作成）
        public void setRadius(int radius) {
            double r;   // 半径
            Scanner scanner = new Scanner(System.in);
    
            System.out.print( "半径：" );
            r = 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 ""; // 不要ならば削除すること
        }
    }
    
[/code]


CC BY-SA 4.0
2020-06-25T05:48:04.143
67982
2020-07-24T06:49:31.263
2020-06-25T15:08:51.110
40820
40820
question
java
java 球体を表すBallクラス


クラスのフィールドとメソッドの使い方が分かればその応用で解決できます。

  * Ball(int radius) ------------ 半径radiusの球体を生成する 
    * radiusを書き換えるので、コンストラクタの中でsetRadiusメソッドを呼び出せば解決です。
  * Ball(Ball ball) ------------- 球体ballのクローンを生成する 
    * こちらは別のインスタンスから半径を取ってきてradiusを書き換えるので、`ball.getRadius();`で取得したradiusを上のコンストラクタと同様にsetRadiusで書き換えます。
  * int getRadius() ------------- 半径を取得する 
    * この演習までの教材に`return`の使い方が載っていたと思いますので、それを参考にしてみましょう。  
このサイトの類似QA: [戻り値についてとvoidについて](https://ja.stackoverflow.com/a/11560/9820)

  * void setRadius(int radius) -- 半径を設定する 
    * `this`キーワードをうまく使いましょう。  
少し発展的な類似QA: [継承したクラスのメンバ変数を差し替えたい](https://ja.stackoverflow.com/q/4642/9820)

  * double computeVolume() ------ 体積を計算する 
    * 類似の[演習問題](http://www.aoni.waseda.jp/ichiji/2012/java-01/java-05-1.html)サイトのどこかに解答が載っています。
  * boolean equalTo(Ball ball) -- 球体ballと同じ大きさか判定する 
    * このインスタンスのradiusとball.getRadius()を比較演算子で比較した結果をreturnしましょう。
  * String toString() ----------- 文字列表現「Ball(radius)」を得る 
    * 文字列のフォーマットが分かりませんが、例えば下記のサンプルコードで半径と体積を表現できます。

[code]

    public String toString() {
        return String.format("ボールの半径は%d, 体積は%fです。", radius, computeVolume());
    }
    
[/code]


CC BY-SA 4.0
2020-07-24T06:49:31.263
68894
2020-07-24T06:49:31.263
9820
67982
answer