-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTripComputer.java
More file actions
99 lines (86 loc) · 2.7 KB
/
TripComputer.java
File metadata and controls
99 lines (86 loc) · 2.7 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package triptimepackage;
import java.awt.Color;
//import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class TripComputer extends JPanel implements ActionListener {
private double totalTime = 0.0;
private boolean restStopTaken = false;
private JTextField distance;
private JTextField speed;
private JButton addLeg;
private JTextField restTime;
private JButton addRest;
private JLabel result;
public TripComputer(){
setLayout(new GridLayout(7, 1));
//setLayout(new FlowLayout());
distance = new JTextField("Enter distance (mi)");
speed = new JTextField("Enter speed (mph)"); //in miles/hour
addLeg = new JButton("Add Leg");
restTime = new JTextField("Enter rest time (hr)");
addRest = new JButton("Add Rest Stop"); //in hours
result = new JLabel(" Total Travel Time : ");
add(distance);
add(speed);
add(addLeg);
add(restTime);
add(addRest);
add(result);
addLeg.addActionListener(this);
addRest.addActionListener(this);
}
private static double getDoubleFromTF(JTextField jtf) throws Exception{
return Double.parseDouble(jtf.getText().trim());
}
public void actionPerformed(ActionEvent e) {
String btnClicked = e.getActionCommand().trim();
double num1 = 0, num2 = 0 , num3 = 0;
try{
switch (btnClicked) {
case "Add Leg":
num1 = getDoubleFromTF(distance); //gets the double from the t.f
num2 = getDoubleFromTF(speed);
ComputeLegTime(num1, num2);
break;
case "Add Rest Stop":
num3 = getDoubleFromTF(restTime);
takeRestStop(num3);
break;
}
result.setText(" Total Travel Time: " + totalTime + " Hours.");
System.out.println("distance: " + num1 + "\nspeed: "+ num2 +"\nrestTime: "+ num3); //To check the values stored.
System.out.println(restStopTaken);
}
catch(Exception ex){
result.setText("Something went wrong. "+ ex.getMessage());
}
}
public double ComputeLegTime (double distance, double speed) throws Exception{
if ((distance < 0 ) || (speed < 0)){
throw new Exception("Distance and speed must be greater than zero.");
}else{
totalTime += distance/speed;
restStopTaken = false;
}
return totalTime;
}
public void takeRestStop (double time) throws Exception{
if (time < 0){
throw new Exception("Time must be greater than zero.");
}else if(restStopTaken){ //rest stop was already taken
throw new Exception("Two consecutive rest stops are illegal.");
}else{
restStopTaken = true;
totalTime += time;
}
}
public double getTripTime(){
return totalTime;
}
}