import java.io.File; import java.io.FileNotFoundException; import java.util.HashMap; import java.util.HashSet; import java.util.Scanner; class Hovedprogram { public static void main(String[] args) { HashMap emner = new HashMap<>(); // En map (ordbok) som holder rede p? emnene HashSet fritakBeholder = new HashSet<>(); // Kan opprette beholder av objekter som implementerer samme interface System.out.println("Oppgi filnavnet med informasjon om emnene du ?nsker ? opprette"); Scanner brukerInput = new Scanner(System.in); String filnavn = brukerInput.nextLine(); brukerInput.close(); // Husker ? lukke Scanner-objektet File fil = new File(filnavn+".txt"); try { // Scanner-klassen kaster FileNotFoundException, derfor pr?ver vi ? fange den her Scanner scanner = new Scanner(fil); while (scanner.hasNextLine()) { String linje = scanner.nextLine(); String[] informasjon = linje.strip().split(","); // stripper og splitter p? "," String navn = informasjon[1]; int studiepoeng = Integer.parseInt(informasjon[2]); // gj?r om strengen til en int String emnebeskrivelse = informasjon[3]; String eksamensinformasjon = informasjon[4]; if (informasjon[0].equals("Informatikkemne")) { // Husker ? bruke equals Emne emne = new Informatikkemne(navn, studiepoeng, emnebeskrivelse, eksamensinformasjon); // implisitt typecasting emner.put(navn, emne); } else { Emne emne = new Psykologiemne(navn, studiepoeng, emnebeskrivelse, eksamensinformasjon); emner.put(navn, emne); } } scanner.close(); // lukker scanner } catch (FileNotFoundException e) { // fanger unntaket System.out.println("Fant ikke filen"); } // Lager et informatikkemne for ? teste ut ? legge til et emne som krav Informatikkemne inf = new Informatikkemne("IN1010", 10, "Objektorientert programmering", "Skriftlig eksamen"); for (String emnenavn : emner.keySet()) { if (emner.get(emnenavn) instanceof Informatikkemne) { // sjekker om emnet er et informatikkemne String krav = "R1"; Informatikkemne emne = (Informatikkemne)emner.get(emnenavn); // eksplisitt typecasting emne.leggTilOpptakskrav(krav); if (emne.hentNavn().equals("IN2010")) { emne.leggTilOpptakskrav(inf); // legger til emne som opptakskrav } System.out.println(emne); } } Stipendiat stipendiat = new Stipendiat(); Student student = new Student("Informatikk", "Aisha", null, "Spraakteknologi"); // legger til to ulike objekter i ¨Śn beholder fordi begge implementerer interfacet Fritak fritakBeholder.add(stipendiat); fritakBeholder.add(student); Studieprogram studieprogram = new Studieprogram("Informatikk", 1); studieprogram.soekOpptak("Nora"); studieprogram.soekOpptak("Elsa"); // demonstrerer hva som skjer n?r vi kaster en ny unchecked RuntimeException som vi har skrevet } }