96 lines
3.0 KiB
Java
96 lines
3.0 KiB
Java
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/*
|
|
* PTra22_02.java
|
|
* 作成 Rhizome
|
|
*------------------------------------------------------------
|
|
* Copyright(c) Rhizome Inc. All Rights Reserved.
|
|
*/
|
|
public class PTra22_02 {
|
|
public static void main(String[] args) {
|
|
|
|
// ※この問題はPTra10_05で作成したCarクラスを使用して解いてください。
|
|
// 目的地までの距離
|
|
final int DISTANCE = 300;
|
|
|
|
// 1台目
|
|
Car car1 = new Car();
|
|
Driver driver1 = new Driver("田中太郎", 123456789101L, 28, "東京都中央区日本橋1-2-3");
|
|
car1.color = "赤";
|
|
car1.gasoline = 50;
|
|
car1.driverInfo = driver1;
|
|
|
|
// 2台目
|
|
Car car2 = new Car();
|
|
Driver driver2 = new Driver("佐藤二朗", 109876543210L, 45, "東京都豊島区北池袋1-2-3");
|
|
car2.color = "黄";
|
|
car2.gasoline = 60;
|
|
car2.driverInfo = driver2;
|
|
|
|
// 3台目
|
|
Car car3 = new Car();
|
|
Driver driver3 = new Driver("鈴木三郎", 101010101010L, 39, "埼玉県さいたま市大宮区錦町1-2-3");
|
|
car3.color = "青";
|
|
car3.gasoline = 70;
|
|
car3.driverInfo = driver3;
|
|
|
|
// Car型リストに作成したインスンタンスを格納する
|
|
List<Car> carList = new ArrayList<>();
|
|
carList.add(car1);
|
|
carList.add(car2);
|
|
carList.add(car3);
|
|
|
|
// 配列の要素数分繰り返しを行う
|
|
for (Car car : carList) {
|
|
/*
|
|
* TODO 以下の処理を作成してください
|
|
* 変数にcar.run()を代入してください 変数にDriver.displayInfo()を代入してください
|
|
*
|
|
*/
|
|
System.out.println("運転手の情報です。");
|
|
|
|
/*
|
|
* TODO 変数に代入した関数displayInfo()を実行してください。
|
|
*
|
|
*/
|
|
|
|
|
|
/*
|
|
* 進んだ距離の合計move と runメソッドを実行した回数のcountは繰り返しスコープの外で初期化
|
|
* このタイミングで初期化をおこなうことで、車ごとの進んだ距離と実行回数にすることができる
|
|
*/
|
|
int move = 0;
|
|
int count = 0;
|
|
|
|
while (true) {
|
|
|
|
/*
|
|
* carListのi番目のrunメソッドを実行する。 iの数が0,1,2と増えていくので、繰り返すごとに別のインスタンスのrunメソッドが実行される
|
|
*/
|
|
/*
|
|
* TODO 変数に代入した関数run()を実行してください。
|
|
*
|
|
*/
|
|
|
|
// 戻り値が -1 の時はガソリンがなくなった時なので繰り返し終了
|
|
if (ret == -1) {
|
|
System.out.println("目的地に到達できませんでした");
|
|
break;
|
|
}
|
|
|
|
// 進んだ距離の合計moveにrunメソッドの戻り値を加算
|
|
move += ret;
|
|
// runメソッドを実行した回数countをインクリメント
|
|
count++;
|
|
|
|
// 進んだ距離の合計が、目的地を超えた場合は目的についたので繰り返し終了
|
|
if (DISTANCE <= move) {
|
|
System.out.println("目的地にまで" + count + "時間かかりました。残りのガソリンは、" + car.gasoline + "リットルです" + "\n");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|