Need help with a Java problem: -------------------------------------------------
ID: 3846051 • Letter: N
Question
Need help with a Java problem:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CTAdata.txt:
415 brown Merchandise-Mart 16:15:54
414 brown Merchandise-Mart 16:18:48
504 purple Merchandise-Mart 16:19:59
513 purple Merchandise-Mart 16:21:57
425 brown Merchandise-Mart 16:21:00
416 brown Merchandise-Mart 16:25:45
422 brown Merchandise-Mart 16:26:37
415 brown Merchandise-Mart 16:31:54
505 purple Merchandise-Mart 16:31:31
411 brown Merchandise-Mart 16:31:55
513 purple Adams/Wabash 16:14:57
614 green Adams/Wabash 16:16:12
310 pink Adams/Wabash 16:17:29
720 orange Adams/Wabash 16:18:52
422 brown Adams/Wabash 16:19:37
008 green Adams/Wabash 16:21:49
007 green Adams/Wabash 16:22:50
415 brown Adams/Wabash 16:24:54
504 purple Adams/Wabash 16:25:59
315 pink Adams/Wabash 16:26:00
TestFinalAnswer.java:
package finalanswer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
import stdlib.StdIn;
import stdlib.StdOut;
public class TestFinalAnswer {
public static <Item extends Comparable<? super Item>> boolean isSorted(Item[] a) {
for (int i = 0; i < a.length-1; i++) {
if (a[i].compareTo(a[i+1]) > 0) return false;
}
return true;
}
public static void main(String[] args) {
StdOut.println("*** " + FinalAnswer.yourName() + " ***");
StdOut.println();
Integer[] array = new Integer[12];
Random r = new Random();
for (int i = 0; i < array.length; i++) {
array[i] = r.nextInt(1000);
}
StdOut.println("Array before sorting: " + Arrays.toString(array));
FinalAnswer.minpqSort(array);
StdOut.println("Array after sorting: " + Arrays.toString(array));
StdOut.println("Array is sorted: " + isSorted(array));
StdOut.println();
Queue<String> queue = new Queue<String>();
queue.enqueue("first");
queue.enqueue("second");
queue.enqueue("third");
queue.enqueue("fourth");
StdOut.println("Queue before reversing: " + queue);
FinalAnswer.reverseQueue(queue);
StdOut.println("Queue after reversing: " + queue);
StdOut.println();
double[] frequencies = {110.0, 110.0*1.224, 110.0*1.224*1.224};
ArrayList<Chord> risingChords = FinalAnswer.createRisingChordList(0.2, frequencies, 10);
for (Chord risingChord: risingChords) {
StdOut.println("Playing: " + risingChord);
risingChord.play();
}
StdOut.println();
ArrayList<CTATrain> ctaTrains = new ArrayList<CTATrain>();
StdIn.fromFile("data/CTAdata.txt");
while (!StdIn.isEmpty()) {
int runNumber = StdIn.readInt();
String lineColor = StdIn.readString();
String nextStation = StdIn.readString();
String arrivalTime = StdIn.readString();
ctaTrains.add(new CTATrain(runNumber, lineColor, nextStation, arrivalTime));
}
StdOut.println("--- Trains before sorting ---");
for (CTATrain ctaTrain: ctaTrains) {
StdOut.println(ctaTrain);
}
StdOut.println();
ctaTrains.sort(null);
StdOut.println("--- Trains after sorting by run number ---");
for (CTATrain ctaTrain: ctaTrains) {
StdOut.println(ctaTrain);
}
StdOut.println();
ctaTrains.sort((CTATrain t1, CTATrain t2) -> (t1.getArrivalTime().compareTo(t2.getArrivalTime())));
StdOut.println("--- Trains after sorting by arrival time ---");
for (CTATrain ctaTrain: ctaTrains) {
StdOut.println(ctaTrain);
}
StdOut.println();
StdOut.println("=== " + FinalAnswer.yourName() + " ===");
}
}
Instructions 1. Eclipse, create a package called finalanswer. Copy and place into the package the file TestFinalAnswer.java provided below 3. n the package, create a class called Final Answer. All of the static methods you are asked to write will go in this class 4. You will also add to the package a reference class called CTATrain.Explanation / Answer
PrintCTATrains.java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import examsolutions.CTATrain;
import stdlib.In;
import stdlib.StdIn;
import stdlib.StdOut;
public class PrintCTATrains {
public static void main(String[] args) {
StdIn.fromFile ("CTAdata.txt");
ArrayList<CTATrain> arrayToSort = new ArrayList<CTATrain>();
while (StdIn.hasNextLine()){
String line = StdIn.readLine();
String[] fields = line.split("\s+");
int runNumber= Integer.parseInt(fields[0]);
String color= fields[1];
String station=fields[2];
String arrivalTime = fields[3];
CTATrain train = new CTATrain(runNumber, color, station, arrivalTime);
arrayToSort.add(train);
}
Collections.sort(arrayToSort);
StdOut.println(" Sorted by run number:");
for(CTATrain item:arrayToSort){
StdOut.println(item);
}
StdOut.println(" Sorted by next station:");
Collections.sort(arrayToSort, CTATrain.BY_STATION);
for(CTATrain item:arrayToSort){
StdOut.println(item);
}
StdOut.println(" Sorted by arrival time:");
Collections.sort(arrayToSort, CTATrain.BY_ARRIVAL_TIME);
for(CTATrain item:arrayToSort){
StdOut.println(item);
}
}
}
CTATrain.java
import java.util.Comparator;
//Jocelynne Gonzales
public class CTATrain implements Comparable <CTATrain>{
public static final Comparator<CTATrain> BY_STATION = new ByStation();
public static final Comparator<CTATrain> BY_ARRIVAL_TIME = new ByArrivalTime();
private final int runNumber;
private final String lineColor;
private final String nextStation;
private final String arrivalTime;
public CTATrain(
int runNumber,
String lineColor,
String nextStation,
String arrivalTime){
this.runNumber = runNumber;
this.lineColor = lineColor;
this.nextStation = nextStation;
this.arrivalTime = arrivalTime;
}
public int runNumber(){
return runNumber;
}
public String lineColor(){
return lineColor;
}
public String nextStation(){
return nextStation;
}
public String arrivalTime(){
return arrivalTime;
}
public String toString(){
return "[" + this.lineColor + ", " + this.runNumber + ", " + this.nextStation + ", " + this.arrivalTime + "]";
}
private static class ByStation implements Comparator<CTATrain> {
public int compare(CTATrain a, CTATrain b) {
return a.nextStation.compareTo(b.nextStation);
}
}
private static class ByArrivalTime implements Comparator<CTATrain> {
public int compare(CTATrain a, CTATrain b) {
return a.arrivalTime.compareTo(b.arrivalTime);
}
}
public int compareTo(CTATrain that){
if (this.runNumber < that.runNumber) return -1;
if (this.runNumber > that.runNumber) return +1;
return 0;
}
}