0

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

/*
 * 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 ""; // 不要ならば削除すること
}

}

tata
  • 1
  • 1
  • 2
    今の内容だけだと残念ながら「何が分からないのか、第三者視点で分からない」状態です。 / 「そもそもJavaの書き方が分からない」「プログラムの仕様(出題?)の意図が分からない」「数式が分からない」など、何通りもの"分からないケース"が考えられます。 / ヘルプの 良い質問をするには? も参考にしながら、より具体的な内容に書き換えてみてください。 / 何らかの課題として出されたものであるなら、その人に直接尋ねることも検討してください。 – cubick Jun 25 '20 at 11:14
  • 体積を計算するプログラムなんですけどなんで間違えているのかわからないです... – tata Jun 25 '20 at 15:09
  • 球体ballと同じ大きさか判定するっていうのと 文字列表現を得るっていうのもどうやって書けばいいのかわからないです... – tata Jun 25 '20 at 15:55
  • 2
    コメントによると質問が3つほどありそうですね。それぞれ質問を分けるか一つづつ解決したほうがよろしいと思います。 – keitaro_so Jun 26 '20 at 00:17

1 Answers1

1

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

  • Ball(int radius) ------------ 半径radiusの球体を生成する
    • radiusを書き換えるので、コンストラクタの中でsetRadiusメソッドを呼び出せば解決です。
  • Ball(Ball ball) ------------- 球体ballのクローンを生成する
    • こちらは別のインスタンスから半径を取ってきてradiusを書き換えるので、ball.getRadius();で取得したradiusを上のコンストラクタと同様にsetRadiusで書き換えます。
  • int getRadius() ------------- 半径を取得する
    • この演習までの教材にreturnの使い方が載っていたと思いますので、それを参考にしてみましょう。
      このサイトの類似QA: 戻り値についてとvoidについて
  • void setRadius(int radius) -- 半径を設定する
  • 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());
}
payaneco
  • 12,323
  • 21
  • 57