import java.util.Scanner; import java.io.File; class Trikkelinje { private int linjenummer; private String endeHoldeplass; private Holdeplass forste; private Holdeplass siste; public Trikkelinje(String filnavn){ lesFraFil(filnavn); } public void lesFraFil(String filnavn){ Scanner sc = null; try { sc = new Scanner(new File(filnavn)); } catch (Exception e){ System.out.println("Kunne ikke lese fra fil"); return; //System.exit(1); // vil ikke nødvendigvis avslutte programmet } String[] info = sc.nextLine().split(";"); linjenummer = Integer.parseInt(info[0]); endeHoldeplass = info[1]; Holdeplass forrige = null; while (sc.hasNextLine()){ String navn = sc.nextLine(); Holdeplass ny = new Holdeplass(navn); if (forste == null){ forste = ny; } if (forrige != null){ forrige.neste = ny; ny.forrige = forrige; } forrige = ny; } siste = forrige; // etter while løkke } public String skrivUtRute(String fra, String til){ // navn fra, navn til String rute = ""; Holdeplass peker = forste; int antall = 0; // finne "fra" Holdeplass while (peker != null){ if (peker.hentNavn().equals(fra)){ while (peker != null){ // finne "til" Holdeplass if (peker.hentNavn().equals(til)){ return "Fra " + fra + "("+antall+" stopp):" + rute; } peker = peker.neste; rute += " -> " + peker.hentNavn(); antall++; } } peker = peker.neste; } return "Fant ikke holdeplass"; } public int antallStoppFra(Holdeplass fra, Holdeplass til, int antall){ if (fra == null){ // slutten return antall; } if (fra.hentNavn().equals(til.hentNavn())){ return antall; } // fra = fra.neste - leter fortsatt etter "til" return antallStoppFra(fra.neste, til, antall+1); } public Holdeplass hentHoldeplass(String navn){ Holdeplass peker = forste; while (peker != null){ if (peker.hentNavn().equals(navn)){ return peker; // Holdeplass objekt } peker = peker.neste; } return null; // fant ikke holdeplass } public void settForste(Holdeplass holdeplass){ forste = holdeplass; } public Holdeplass hentForste(){ return forste; } }