package Q10; import java.io.*; import java.util.*; public class TrainTimeTable { private LinkedList schedule; public TrainTimeTable() { this(new LinkedList()); } public TrainTimeTable(LinkedList schedule) { this.schedule = schedule; } public void delay(String city, int minutes) { System.out.println(String.format("Delay %s by %d minutes", city, minutes)); Station station = stationIn(city); station.delayBy(minutes); } public void displaySchedule() { this.displaySchedule(System.out); } public void displaySchedule(PrintStream out) { out.println("Station | Arrival | Departure | Day"); for (Station station : schedule) out.println( String.format( "%s | %s | %s | %d", station.getCity(), station.getArrival(), station.getDeparture(), station.getDay())); } public Station stationIn(String city) { for (Station station : this.schedule) if (station.getCity() == city) return station; return null; } public static void main(String[] args) { System.out.println("=== Question 10 ==="); LinkedList stations = new LinkedList(); stations.add(new Station("Vancouver", new Date(), new Date(), 1)); stations.add(new Station("Kamloops", new Date(), new Date(), 2)); stations.add(new Station("Jasper", new Date(), new Date(), 2)); stations.add(new Station("Edmonton", new Date(), new Date(), 2)); stations.add(new Station("Saskatchewan", new Date(), new Date(), 3)); stations.add(new Station("Winnipeg", new Date(), new Date(), 3)); stations.add(new Station("Sioux Lookout", new Date(), new Date(), 4)); stations.add(new Station("Hornepayne", new Date(), new Date(), 4)); stations.add(new Station("Capreol", new Date(), new Date(), 5)); stations.add(new Station("Toronto", new Date(), new Date(), 5)); TrainTimeTable schedule = new TrainTimeTable(stations); Scanner in = new Scanner(System.in); String selection = args.length > 0 ? args[0] : null; while (true) { if (selection == null) { System.out.println(); System.out.println("Enter command (Show, Delay, Quit):"); selection = in.nextLine().toLowerCase(); } if (selection.equals("quit")) return; if (selection.equals("show")) { schedule.displaySchedule(System.out); } else { String[] tokens = selection.split(" "); if (tokens.length == 3) { schedule.delay(tokens[1], Integer.parseInt(tokens[2])); } else { System.out.println("Could not parse command"); } } selection = null; } } }