キーボードから入力した情報に基づいて三角形や四角形のインスタンスを生成し、その面積を表示するプログラム

キーボードから入力した情報に基づいて三角形や四角形のインスタンスを生成し、その面積を表示するプログラム

練習問題7

練習4において、メインのクラス(ren14_4→ren14_7)だけを書き換えて、キーボードから入力した情報に基づいて三角形や四角形のインスタンスを生成し、その面積を表示するプログラムを作成する。

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

 

実行画面

形の個数を入力して下さい > 3【enterキー】
図形の種類を入力して下さい(1:三角形, 2:四角形) > 3【enterキー】
図形の種類を入力して下さい(1:三角形, 2:四角形) > 1【enterキー】
底辺の長さを入力して下さい > 4【enterキー】
高さを入力して下さい > 2【enterキー】
図形の種類を入力して下さい(1:三角形, 2:四角形) > 2【enterキー】
よこの長さを入力して下さい > 5【enterキー】
たての長さを入力して下さい > 3【enterキー】
図形の種類を入力して下さい(1:三角形, 2:四角形) > 1【enterキー】
底辺の長さを入力して下さい > 6【enterキー】
高さを入力して下さい > 8【enterキー】
三角形 底辺=4.0 高さ=2.0 面積=4.0
四角形 よこ=5.0 たて=3.0 面積=15.0
三角形 底辺=6.0 高さ=8.0 面積=24.0

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

図形の種類を入力して下さい(1:三角形, 2:四角形) > 1【enterキー】
底辺の長さを入力して下さい > 4【enterキー】
高さを入力して下さい > 6【enterキー】
図形の種類を入力して下さい(1:三角形, 2:四角形) > 2【enterキー】
よこの長さを入力して下さい > a【enterキー】
例外が発生しました。

 

クラス:ren14_7(メインのクラス)
 キーボードから読み込んだ個数を要素数とするFigure型の配列を作成し、キーボードからの入力にしたがって三角形や四角形のインスタンスを生成する。

 

解答例

interface Figure {

void dislayArea();
}

class Rectangle implements Figure {

public double width, height;
public Rectangle(double w, double h) {
width = w;
height = h;
}
public void dislayArea() {
System.out.print("四角形 よこ=" + width + " たて=" + height);
System.out.println(" 面積=" + (width * height) );
}
}

class Triangle implements Figure {

public double bottom, height;
public Triangle(double b, double h) {
bottom = b;
height = h;
}
public void dislayArea() {
System.out.print("三角形 底辺=" + bottom + " 高さ=" + height);
System.out.println(" 面積=" + (bottom * height / 2.0) );
}
}

import java.io.*;

public class ren14_7{
public static void main(String[] args) {
int num, type;
double width, height;
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
try {
System.out.print("図形の個数を入力して下さい > ");
num = Integer.parseInt(br.readLine());
Figure figure[] = new Figure[num];
for(int i=0; iSystem.out.print("図形の種類を入力して下さい(1:三角形, 2:四角形) > ");
type = Integer.parseInt(br.readLine());
switch(type) {
case 1:
System.out.print("底辺の長さを入力して下さい > ");

width = Double.parseDouble(br.readLine());
System.out.print("高さを入力して下さい > ");
height = Double.parseDouble(br.readLine());
figure[i] = new Triangle(width, height);
break;
case 2:
System.out.print("よこの長さを入力して下さい > ");
width = Double.parseDouble(br.readLine());
System.out.print("たての長さを入力して下さい > ");
height = Double.parseDouble(br.readLine());
figure[i] = new Rectangle(width, height);
break;
default:
i--;
continue;
}

}
for(int i = 0; i < figure.length; i++) {
figure[i].dislayArea();
}
}
catch (Exception e) {
System.out.println("例外が発生しました。");
}
}
}