init
This commit is contained in:
95
Question22-FunctionAndLambda/src/PTra22_02.java
Normal file
95
Question22-FunctionAndLambda/src/PTra22_02.java
Normal file
@@ -0,0 +1,95 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user