-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAirplane.java
More file actions
68 lines (60 loc) · 2.03 KB
/
Airplane.java
File metadata and controls
68 lines (60 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import java.util.ArrayList;
import java.util.List;
public class Airplane {
private List<AirplanePart> parts = new ArrayList<>();
private List<AirplanePart> failedParts = new ArrayList<>();
private int flightNumber;
public Airplane(int flightNumber) {
this.flightNumber = flightNumber;
this.parts.add(new Flap(1));
this.parts.add(new Flap(2));
this.parts.add(new Pilot(1));
this.parts.add(new Pilot(2));
this.parts.add(new Pilot(3));
this.parts.add(new Engine(1));
this.parts.add(new Engine(2));
this.parts.add(new Engine(3));
this.parts.add(new Engine(4));
}
public void flight() throws CrashException {
int failedFlaps = 0;
int failedPilots = 0;
int failedInnerEngines = 0;
int failedOuterEngines = 0;
for (AirplanePart item:parts) {
try{
item.calculate();
}catch(PartException e){
e.printStackTrace();
this.failedParts.add(item);
switch(e.partType) {
case ENGINE:
if(e.number == 1 || e.number == 4)
failedOuterEngines++;
else
failedInnerEngines++;
break;
case FLAP:
failedFlaps++;
break;
case PILOT:
failedPilots++;
break;
}
}
}
if(failedInnerEngines+failedOuterEngines >= 3) {
if(failedInnerEngines>=2)
throw new CrashException(flightNumber, "Engines failed");
}
if(failedFlaps>=2) {
throw new CrashException(flightNumber, "Flaps failed");
}
if(failedPilots>=3) {
throw new CrashException(flightNumber, "Pilots died");
}
}
public List<AirplanePart> getFailedParts() {
return failedParts;
}
}