import java.util.ArrayList; import java.util.Scanner; import java.util.Stack; class Rekursjon { public static void main(String[] args) { // Tester oppgave 1 Scanner scanner = new Scanner(System.in); spoersmaalR(0, scanner); scanner.close(); // Tester oppgave 2 String[] varer = {"brokkoli", "eple", "broed", "ost", "is"}; Dagligvarer dagligvarer = new Dagligvarer(); for (String v : varer) { Vare vare = new Vare(v); dagligvarer.leggTil(vare); } System.out.println(dagligvarer.kjoepVare(true, "broed")); System.out.println(dagligvarer.kjoepVare(false, "asparges")); GlutenfriVare glutenfriVare = new GlutenfriVare("broed"); dagligvarer.leggTil(glutenfriVare); System.out.println(dagligvarer.kjoepVare(true, "broed").navn); // // Tester oppgave 3 String[][] sti = {{"hvitveis", "geitrams"}, {"blaaveis", "geitrams"}, {"geitrams", "hvitveis"}, {"gullstjerne", "blaaveis", "hvitveis"}, {"hvitveis"}}; ArrayList kurv = new ArrayList<>(); plukkBlomsterR(0, sti, kurv); for (String blomst : kurv) { System.out.println(blomst); } // // Tester oppgave 4 Filsystem filsystem = new Filsystem("Dokumenter"); Fil fil = new Fil("Syntaks.pdf"); filsystem.hentHovedmappe().leggTil(fil); Mappe traader = new Mappe("Traader"); traader.leggTil(new Fil("Oblig_2.java")); filsystem.hentHovedmappe().leggTil(traader); Mappe gui = new Mappe("GUI"); gui.leggTil(new Fil("Innlevering_5.java")); filsystem.hentHovedmappe().leggTil(gui); Mappe beholdere = new Mappe("Beholdere"); filsystem.hentHovedmappe().leggTil(beholdere); Mappe rekursjon = new Mappe("Rekursjon"); Mappe innlevering_3 = new Mappe("Innlevering_3"); rekursjon.leggTil(innlevering_3); Mappe repetisjonstime = new Mappe("Repetisjonstime"); repetisjonstime.leggTil(new Fil("Dagligvarer.java")); rekursjon.leggTil(repetisjonstime); filsystem.hentHovedmappe().leggTil(rekursjon); Mappe diverse = new Mappe("Diverse"); Mappe designOgTestbarhet = new Mappe("Design_Og_Testbarhet"); designOgTestbarhet.leggTil(new Fil("Enhetstest.java")); diverse.leggTil(designOgTestbarhet); filsystem.hentHovedmappe().leggTil(diverse); String filsti = filsystem.finnFilstiR("Dagligvarer.java", filsystem.hentHovedmappe()); if (filsti != null) { System.out.println("Filsti: " + filsti); } else { System.out.println("Fant ikke filen ..."); } } public static void spoersmaalR(int n, Scanner scanner) { System.out.println("N? kaller du p? meg for " + n + ". gang. Vil du fortsette?"); if (scanner.nextLine().equals("Ja")) { spoersmaalR(n+1, scanner); } else { System.out.println("Da var du ferdig. Du gjennomf?rte totalt " + n + " rekursiv(t/e) kall."); } } public static void spoersmaalI(int n, Scanner scanner) { System.out.println("N? kaller du p? meg for " + n + ". gang. Vil du fortsette?"); while (scanner.nextLine().equals("Ja")) { n++; System.out.println("N? kaller du p? meg for " + n + ". gang. Vil du fortsette?"); } // scanner.nextLine() er ikke "Ja" System.out.println("Da var du ferdig. Du gjennomf?rte totalt " + n + " iterasjoner."); } public static ArrayList plukkBlomsterR(int indeks, String[][] sti, ArrayList kurv) { if (indeks >= sti.length) { return kurv; } ArrayList blaaveiser = new ArrayList<>(); // i tilfelle vi finner en bl?veis p? samme indeks som gullstjernen, men f?r vi returnerer for (String blomst : sti[indeks]) { if (blomst.equals("hvitveis")) { kurv.add(blomst); } if (blomst.equals("blaaveis")) { blaaveiser.add(blomst); } if (blomst.equals("gullstjerne")) { kurv.add(blomst); for (String blaaveis : blaaveiser) { kurv.add(blaaveis); } return kurv; } } kurv = plukkBlomsterR(indeks+1, sti, kurv); for (String blomst : sti[indeks]) { if (blomst.equals("blaaveis")) { kurv.add(blomst); } } return kurv; } public static ArrayList plukkBlomsterI(int indeks, String[][] sti, ArrayList kurv) { Stack stack = new Stack<>(); boolean ferdig = false; while (indeks < sti.length && !ferdig) { stack.push(sti[indeks]); ArrayList blaaveiser = new ArrayList<>(); for (String blomst : sti[indeks]) { if (blomst.equals("hvitveis")) { kurv.add(blomst); } if (blomst.equals("blaaveis")) { blaaveiser.add(blomst); } if (blomst.equals("gullstjerne")) { kurv.add(blomst); for (String blaaveis : blaaveiser) { kurv.add(blaaveis); } ferdig = true; break; } } indeks++; } stack.pop(); while (!stack.isEmpty()) { String[] sted = stack.pop(); for (String blomst : sted) { if (blomst.equals("blaaveis")) { kurv.add(blomst); } } } return kurv; } }