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 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; } } } } }