スーパークラス、サブクラスを作成し、各操作をするプログラム 車の積載量 乗客数
練習問題6
車を表すスーパークラスCar、トラックを表すサブクラスTruck、バスを表すサブクラスBusを作成し、各操作ができるプログラムを作成する。
実行画面
全車情報表示(1), トラックに荷物を積む(2), トラックから荷物を下ろす(3),
バスに乗客を乗せる(4), バスから乗客を降ろす(5), 終了(他)>1【enterキー】
車の種類:トラック
色:青
最大積載量:2.0[t]
現在積載量:0.0[t]
車の種類:バス
色:緑
乗車定員:30[人]
現在乗客数:0[人]
操作を入力して下さい
全車情報表示(1), トラックに荷物を積む(2), トラックから荷物を下ろす(3),
バスに乗客を乗せる(4), バスから乗客を降ろす(5), 終了(他)>2【enterキー】
荷物の重さ[t]を入力して下さい > 1.5【enterキー】
1.5[t]積み込みました。
操作を入力して下さい
全車情報表示(1), トラックに荷物を積む(2), トラックから荷物を下ろす(3),
バスに乗客を乗せる(4), バスから乗客を降ろす(5), 終了(他)>4【enterキー】
人数[人]を入力して下さい > 20【enterキー】
20[人]乗せました。
操作を入力して下さい
全車情報表示(1), トラックに荷物を積む(2), トラックから荷物を下ろす(3),
バスに乗客を乗せる(4), バスから乗客を降ろす(5), 終了(他)>3【enterキー】
荷物の重さ[t]を入力して下さい > 2【enterキー】
積み下ろせません。
操作を入力して下さい
全車情報表示(1), トラックに荷物を積む(2), トラックから荷物を下ろす(3),
バスに乗客を乗せる(4), バスから乗客を降ろす(5), 終了(他)>5
人数[人]を入力して下さい > 15
15[人]降ろしました。
操作を入力して下さい
全車情報表示(1), トラックに荷物を積む(2), トラックから荷物を下ろす(3),
バスに乗客を乗せる(4), バスから乗客を降ろす(5), 終了(他)>1【enterキー】
車の種類:トラック
色:青
最大積載量:2.0[t]
現在積載量:1.5[t]
車の種類:バス
色:緑
乗車定員:30[人]
現在乗客数:5[人]
操作を入力して下さい
全車情報表示(1), トラックに荷物を積む(2), トラックから荷物を下ろす(3),
バスに乗客を乗せる(4), バスから乗客を降ろす(5), 終了(他)>0【enterキー】
クラス:Car
メンバ変数:
コンストラクタ:
メンバメソッド:
クラス:Truck (extends Car)
メンバ変数:
コンストラクタ:
メンバメソッド:
最大積載量を超える場合「積み込めません。」と表示する
積載量が負になる場合「積み下ろせません。」と表示する
クラス:Bus (extends Car)
メンバ変数:
コンストラクタ:
メンバメソッド:
乗車定員を超える場合「乗せられません。」と表示する
乗客数が負になる場合「降ろせません。」と表示する
クラス:ren13_6.java(メインのクラス)
まず、要素数が2のCarクラスの配列を作成し、トラックとバスのインスタンス1個ずつを 扱う。トラックの色は"青"、最大積載量は2.0[t]、バスの色は"緑"、乗車定員は30[人]としてイ
ンスタンスを生成する。Carクラスの参照型変数を用いているため、必要に応じてキャスト(型
変換)を行う。
解答例
private String color;
public Car(String color) {
this.color = color;
}
public void display() {
System.out.println("色:" + color);
}
}
private final int MAXPASSENGER;
private int tempPassenger;
public Bus(String color, int maxPassenger) {
super(color);
this.MAXPASSENGER = maxPassenger;
this.tempPassenger = 0;
}
public void carry(int passenger) {
if(tempPassenger + passenger <= MAXPASSENGER) {
tempPassenger += passenger;
System.out.println(passenger + "[人]乗せました。");
}
else {
System.out.println("乗せられません。");
}
}
public void drop(int passenger) {
if(tempPassenger - passenger >= 0) {
tempPassenger -= passenger;
System.out.println(passenger + "[人]降ろしました。");
}
else {
System.out.println("降ろせません。");
}
}
public void display() {
System.out.println("車の種類:バス");
super.display();
System.out.println("乗車定員:" + MAXPASSENGER + "[人]");
System.out.println("現在乗客数:" + tempPassenger + "[人]");
}
}
private final double MAXLOAD;
private double tempLoad;
public Truck(String color, double maxLoad) {
super(color);
this.MAXLOAD = maxLoad;
this.tempLoad = 0;
}
public void add(double load) {
if(tempLoad + load <= MAXLOAD) {
tempLoad += load;
System.out.println(load + "[t]積み込みました。");
}
else {
System.out.println("積み込めません。");
}
}
public void reduce(double load) {
if(tempLoad - load >= 0) {
tempLoad -= load;
System.out.println(load + "[t]積み下ろしました。");
}
else {
System.out.println("積み下ろせません。");
}
}
public void display() {
System.out.println("車の種類:トラック");
super.display();
System.out.println("最大積載量:" + MAXLOAD + "[t]");
System.out.println("現在積載量:" + tempLoad + "[t]");
}
}
public class ren13_6 {
public static void main(String[] args) throws IOException {
BufferedReader br
= new BufferedReader( new InputStreamReader(System.in) );
Car car[] = new Car[2];
car[0] = new Truck("青", 2.0);
car[1] = new Bus("緑", 30);
System.out.println("操作を入力して下さい");
System.out.println("全車情報表示(1), トラックに荷物を積む(2), トラックから荷物を下ろす(3), ");
System.out.print("バスに乗客を乗せる(4), バスから乗客を降ろす(5), 終了(他)>");
int n = Integer.parseInt(br.readLine());
double load;
int passenger;
while( 1 <= n && n <= 5) {
switch( n ) {
case 1:
for(int i=0; i<2; i++) {
car[i].display();
}
break;
case 2:
System.out.print("荷物の重さ[t]を入力して下さい > ");
load = Double.parseDouble(br.readLine());
((Truck)car[0]).add(load);
break;
case 3:
System.out.print("荷物の重さ[t]を入力して下さい > ");
load = Double.parseDouble(br.readLine());
((Truck)car[0]).reduce(load);
break;
case 4:
System.out.print("人数[人]を入力して下さい > ");
passenger = Integer.parseInt(br.readLine());
((Bus)car[1]).carry(passenger);
break;
case 5:
System.out.print("人数[人]を入力して下さい > ");
passenger = Integer.parseInt(br.readLine());
((Bus)car[1]).drop(passenger);
break;
}
System.out.println();
System.out.println("操作を入力して下さい");
System.out.println("全車情報表示(1), トラックに荷物を積む(2), トラックから荷物を下ろす(3), ");
System.out.print("バスに乗客を乗せる(4), バスから乗客を降ろす(5), 終了(他)>");
n = Integer.parseInt(br.readLine());
}
}
}