/* Oving10a.java oppgave fra it's learning (modifisert 7.18.2) */ /* * Temperaturer.java * Skjelettet til klassen Temperaturer som skal utvides i øving 10, oppave 7.18.2 * * Temperaturer inneholder en todimensjonal tabell med * temperaturer (heltall) for hver time i døgnet i en måned. * Klasse skal være mutabel. * * Det er satt opp tre private hjelpmetoder som kan brukes til å sjekke indeksene */ class Temperaturer { private String måned; private int[][] temperaturdata; // dager ("linjer") x timer ("kolonner") public Temperaturer(String startMåned, int antDager, int antTimer) { måned = startMåned; temperaturdata = new int[antDager][antTimer]; } public void settAll(int[][] temp) { if (gyldigeIndekser(temp.length-1, temp[0].length-1)) { for (int i = 0; i < temp.length; i++) { for (int x = 0; x < temp[i].length; x++) { temperaturdata[i][x] = temp[i][x]; } } } } public String finnMåned() { return måned; } public int finnAntDager() { return temperaturdata.length; } public int finnTimeDag(int dag, int time){ if (gyldigeIndekser(dag,time)) { return temperaturdata[dag][time]; } else { return -1; } } public void settTimeDag(int dag, int time, int temp) { if (gyldigeIndekser(dag,time) && temp >= 0) { temperaturdata[dag][time] = temp; } } //Finn middeltemperatur for hver dag i en måned public double midTempDag(int dag) { int sum = 0; if (gyldigDagnr(dag)) { for (int i = 0; i < temperaturdata[dag].length; i++) { sum += temperaturdata[dag][i]; } return (double)sum / (double)(temperaturdata[dag].length); } else { return -1.0; } } //Finn middeltemperatur for hver time i en måned public double midTempTime(int time) { int sum = 0; //siden det er en kvadratisk tabell holder det å sjekke riktig index for èn dag if (gyldigTimenr(0, time)) { for (int i = 0; i < temperaturdata.length; i++) { sum += temperaturdata[i][time]; } return (double)sum / (double)(temperaturdata.length); } else { return -1.0; } } //Finn middeltemperaturen til hele måneden public double midTempAll() { int sum = 0; int timer = 0; //to loops, en for dager, en for timer i den dagen for (int i = 0; i < temperaturdata.length; i++) { for (int x = 0; x < temperaturdata[i].length; x++) { sum += temperaturdata[i][x]; timer++; } } return (double)sum / (double)timer; } // Tre private hjelpemetoder for å kontrollere indekser: private boolean gyldigDagnr(int dagnr) { return dagnr >= 0 && dagnr < temperaturdata.length; } private boolean gyldigTimenr(int dagnr, int timenr) { return temperaturdata.length > 0 && timenr >= 0 && timenr < temperaturdata[dagnr].length; } private boolean gyldigeIndekser(int dagnr, int timenr) { return gyldigDagnr(dagnr) && gyldigTimenr(dagnr, timenr); } }// Temperaturer class Oving10a { public static void main (String[] args) { Temperaturer temp = new Temperaturer("Test", 4, 5); int[][] tempy = {{15,17,20,22,18},{14,15,15,17,16},{18,19,20,22,22},{16,20,21,22,21}}; temp.settAll(tempy); //sets all data :) System.out.println("dager: " + temp.finnAntDager()); System.out.println("dag2: " + temp.midTempDag(2)); System.out.println("t4: " + temp.midTempTime(4)); System.out.println("all: " + temp.midTempAll()); } } /* Oving10b.java Oppgave 7.18.4 fra boka */ //Student10b istedet for Student fordi det er mange Student.class i classpath class Student10b { private String navn; private int antOppg; public Student10b(String navn, int oppg) { this.navn = navn; this.antOppg = oppg; } public String finnNavn() { return navn; } public int finnAntOppg() { return antOppg; } public void incAntOppg(int increase) { //datavalidering this.antOppg += increase; } public String toString() { return "Navn: " + navn + "\nAnt Oppg: " + antOppg; } } class Oppgaveoversikt { private Student10b[] studenter; private int antStud = 0; public Oppgaveoversikt(int antStud) { studenter = new Student10b[antStud]; } public int finnAntStud() { return antStud; } public int finnStudAntOppg ( int student ) { //her burde det ha vært datavalidering return studenter[student].finnAntOppg(); } public boolean regStud(String navn, int antOppg) { if (antStud < studenter.length) { studenter[antStud] = new Student10b(navn, antOppg); antStud++; return true; } else { return false; } } public void incStudOppg (int student, int increase) { studenter[student].incAntOppg(increase); } public String toString() { String output = "Studenter:"; for (int i = 0; i < antStud; i++) { output += "\n\n" + studenter[i].toString(); } return output; } } class Oving10b { public static void main (String[] args) { /* Student10b TestKlient */ System.out.println("\n\nStudent10b TestKlient"); Student10b stud = new Student10b("Jens", 3); System.out.println("Student: " + stud.finnNavn()); System.out.println("Ant Oppg: " + stud.finnAntOppg()); stud.incAntOppg(2); System.out.println("toString:\n" + stud.toString()); /* Oppgaveoversikt TestKlient */ System.out.println("\n\nOppgaveoversikt TestKlient"); Oppgaveoversikt oos = new Oppgaveoversikt(5); if(!oos.regStud("Jens", 4)) System.out.println("\nOversikt full"); if(!oos.regStud("Pål", 2)) System.out.println("\nOversikt full"); if(!oos.regStud("Trine", 1)) System.out.println("\nOversikt full"); if(!oos.regStud("Lol", 53)) System.out.println("\nOversikt full"); if(!oos.regStud("omglol", 0)) System.out.println("\nOversikt full"); if(!oos.regStud("too many", 0)) System.out.println("\nOversikt full"); System.out.println("\nAntStud: " + oos.finnAntStud()); System.out.println("\nStudent 2: " + oos.finnStudAntOppg(2)); oos.incStudOppg(2, 3); System.out.println("added 3 oppg to student [2]"); System.out.println("dump:\n" + oos.toString()); } }