立体図形を表すインタフェース、立方体を表すクラス、球を表すクラスを作成し、図形の体積と表面積を表示するプログラムを作成

立体図形を表すインタフェース、立方体を表すクラス、球を表すクラスを作成し、図形の体積と表面積を表示するプログラムを作成

練習問題9

立体図形を表すインタフェースSolidFigure、立方体を表すクラスCube、球を表すクラスSphereを作成し、図形の体積と表面積を表示するプログラムを作成する。

 

ただし、立体図形の種類に1, 2以外の値が入力された場合には再入力を促し、処理の途中で何らかのExceptionが発生した場合には「例外が発生しました。」と表示してプログラムを終了してください。

 

実行画面

立体図形の個数を入力して下さい > 3【enterキー】
立体図形の種類を入力して下さい(1:立方体, 2:球) > 1【enterキー】
1辺の長さを入力して下さい > 5【enterキー】
立体図形の種類を入力して下さい(1:立方体, 2:球) > 3【enterキー】
立体図形の種類を入力して下さい(1:立方体, 2:球) > 2【enterキー】
半径を入力して下さい > 10【enterキー】
立体図形の種類を入力して下さい(1:立方体, 2:球) > 1【enterキー】
1辺の長さを入力して下さい > 6【enterキー】
立方体 1辺の長さ=5.0 体積=125.0 表面積=150.0
球 半径=10.0 体積=4188.790204786391 表面=1256.6370614359173
立方体 1辺の長さ=6.0 体積=216.0 表面積=216.0

立体図形の個数を入力して下さい > c【enterキー】

例外が発生しました。

 

インタフェース:SolidFigure

  • 抽象メソッド:displayInfo()機能:(図形の名称と1辺の長さ(または半径)と)体積と表面積を表示する

     

    クラス:Cube (implements SolidFigure)

  • メンバ変数: side (double型) 立方体の1辺の長さ
  • コンストラクタ: 1辺の長さを設定する
  • メンバメソッド:displayInfo() 抽象メソッドのオーバーライド

    ※立方体の1辺の長さをsとすると、体積はs3、表面積は 6×s2 となる。

     

    クラス:Sphere (implements SolidFigure)

  • メンバ変数: radius (double型) 球の半径
  • コンストラクタ:半径を設定する
  • メンバメソッド:displayInfo() 抽象メソッドのオーバーライド

    ※球の半径をrとすると、体積は (4 / 3)×πr3、表面積は 4πr2 となる。

     

    クラス:ren14_9(メインのクラス)
    キーボードから読み込んだ個数を要素数とするSolidFigure型の配列を作成し、キーボードからの入力にしたがって立方体や球のインスタンスを生成する。

     

  • 解答例

    interface SolidFigure {

    void dislayInfo();
    }

    class Cube implements SolidFigure {

     

    public double side;

     

    public Cube(double s) {
    side = s;
    }

     

    public void dislayInfo() {
    System.out.print("立方体 1辺の長さ=" + side);
    System.out.print(" 体積=" + Math.pow(side, 3.0) );
    System.out.println(" 表面積=" + 6*Math.pow(side, 2.0));
    }

     

    }

    class Sphere implements SolidFigure {

     

    public double radius;

     

    public Sphere(double r) {
    radius = r;
    }

     

    public void dislayInfo() {
    System.out.print("球 半径=" + radius);
    System.out.print(" 体積=" + (Math.PI * Math.pow(radius, 3.0) * 4.0 / 3.0) );
    System.out.println(" 表面積=" + (Math.PI * Math.pow(radius, 2.0) * 4.0) );
    }

     

    }

    import java.io.*;

     

    public class ren14_9{

     

    public static void main(String[] args) {

     

    int num, type;
    double side, radius;
    BufferedReader br = new BufferedReader(
    new InputStreamReader(System.in));

     

    try {
    System.out.print("立体図形の個数を入力して下さい > ");
    num = Integer.parseInt(br.readLine());

     

    SolidFigure solidFigure[] = new SolidFigure[num];

     

    for(int i=0; iSystem.out.print("立体図形の種類を入力して下さい(1:立方体, 2:球) > ");
    type = Integer.parseInt(br.readLine());
    switch(type) {
    case 1:
    System.out.print("1辺の長さを入力して下さい > ");
    side = Double.parseDouble(br.readLine());
    solidFigure[i] = new Cube(side);
    break;
    case 2:
    System.out.print("半径を入力して下さい > ");
    radius = Double.parseDouble(br.readLine());
    solidFigure[i] = new Sphere(radius);
    break;
    default:
    i--;

    continue;
    }
    }

     

    for(int i = 0; i < solidFigure.length; i++) {
    solidFigure[i].dislayInfo();
    }

     

    }
    catch (Exception e) {
    System.out.println("例外が発生しました。");
    }

     

    }

     

    }