/** * Ansatt-klassen */ public class Ansatt implements Comparable { private String navn; private int alder; // invariant: alder er fra 20 til og med 30 år private String linje; private String epost; public Ansatt(String navn, int alder, String linje, String epost) { if (alder < 20 || alder > 30) { throw new IllegalArgumentException("Den ansatte er under 20 eller over 30 år"); } this.navn = navn; this.alder = alder; this.linje = linje; this.epost = epost; } public int compareTo(Ansatt annen) { return navn.compareTo(annen.navn); } @Override public String toString() { return navn + " er " + alder + " år, går " + linje + " og kan kontaktes på " + epost; } } /** * Ansattoversikt-klassen */ import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.PriorityQueue; import java.util.Scanner; public class Ansattoversikt { private PriorityQueue ansatte = new PriorityQueue<>(); public void leggTilAnsatt(Ansatt nyAnsatt) { ansatte.add(nyAnsatt); } public void lesFraFil(String filnavn) throws FileNotFoundException { File fil = new File(filnavn); // ved å åpne en Scanner på dette viset vil den automatisk lukkes try (Scanner les = new Scanner(fil)) { while (les.hasNextLine()) { String[] info = les.nextLine().split(";"); // eksempel: ["Lars", "28", "design", "lilarsse@ifi.uio.no"] Ansatt nyAnsatt = new Ansatt(info[0], Integer.parseInt(info[1]), info[2], info[3]); leggTilAnsatt(nyAnsatt); } } } public void skrivTilFil(String filnavn) throws FileNotFoundException { PrintWriter skriv = new PrintWriter(filnavn); int antall_ansatte = ansatte.size(); for (int i = 0; i < antall_ansatte; i ++) { skriv.println(ansatte.poll()); } // tømmer prioritetskøen for ansatte skriv.close(); // hvis man ikke bruker try-notasjonen som i lesFraFil, må man lukke selv } public static void main(String[] args) { // kjøres med kommandoen: java Ansattoversikt ansatte.csv oversikt.txt String innfil = args[0]; // "ansatte.csv" String utfil = args[1]; // "oversikt.txt" Ansattoversikt ansattoversikt = new Ansattoversikt(); try { ansattoversikt.lesFraFil(innfil); } catch (FileNotFoundException e) { System.err.println("Feil ved lesing fra fil: " + e.getMessage()); } try { ansattoversikt.skrivTilFil(utfil); } catch (FileNotFoundException e) { System.err.println("Feil ved skriving til fil: " + e.getMessage()); } } }