tounela Skrevet 7. oktober 2003 Del Skrevet 7. oktober 2003 Hvofor funker ikke følgende kode: Obs: jeg er nybegynner class Temperaturer { private String mndNavn; private int antDager; private int antTimer; private double[][] temperatur; public Temperaturer(String startManed, double[][]startTabell) { mndNavn = startManed; int antDager = startTabell.length; int antTimer = startTabell[0].length; temperatur = new double[antDager][antTimer]; for (int i=0;i < antDager; i++){ for (int j=0;j < antTimer; j++) temperatur[i][j] = startTabell[i][j]; } } public double finnTemperatur(int dagnr, int timenr){ if(gyldigIndeks(dagnr, timenr)){ return temperatur[dagnr][timenr]; } else return -1; } public double finnMiddeltempForDag(int dagnr){ if(gyldigDagnr(dagnr)){ int sum = 0; for(int i=0;i < antTimer;i++){ sum += temperatur[dagnr][i]; } return (double) sum / (double) antTimer; } else return -1; } public double finnMiddeltempForAlleDager(){ double[] middeltempForAlleDager = new double[antDager]; for (int i= 0;i < antDager; i++){ middeltempForAlleDager[i] = finnMiddeltempForDag(i); } return middeltempForAlleDager[antDager]; } public double finnMiddeltempForHelMnd() { double sum = finnMiddeltempForDag(antDager); for (int i = 0;i< antDager;i++){ sum+= finnMiddeltempForDag(i); } return sum / antDager; } private boolean gyldigDagnr(int dagnr){ if(dagnr >= 0 && dagnr < antDager) return true; else return false; } private boolean gyldigTimenr(int dagnr, int timenr){ if(antDager >= 0 && timenr >= 0 && timenr < antTimer) return true; else return false; } private boolean gyldigIndeks(int dagnr, int timenr){ if(gyldigDagnr(dagnr) && gyldigTimenr(dagnr, timenr)) return true; else return false; } } class temperaturStatistikk{ public static void main(String[] args){ double[][] temperatur = {{3,6,1,0},{2,6,1,7},{0,2,8,2},{4,1,7,4}}; Temperaturer mars = new Temperaturer("Mars", temperatur); System.out.println("Temperaturen dag 2 time 4 er " +mars.finnTemperatur(1,3)" grader Celsius"); System.out.println("Gjennomsnittstemperaturen for dag 1 er: " +mars.finnMiddeltempForDag(0)); System.out.println("Gjennomsnittstemperaturen for alle dagene er: " +mars.finnMiddeltempForAlleDager()); System.out.println("Gjennomsnittstemperaturen for Mars er: "+mars.finnMiddeltempForHelMnd()); } } [/code] Lenke til kommentar
Sugx Skrevet 7. oktober 2003 Del Skrevet 7. oktober 2003 Tja, du kan jo starte med å forklare hva som ikke virker, evt kompileringsfeil. Jeg gidder i alle fall ikke cut/paste koden for så og prøve å finne feil. Orker ikke lesa alt heller når jeg ikke har noe anelse om hvor det er feil... Lenke til kommentar
tounela Skrevet 8. oktober 2003 Forfatter Del Skrevet 8. oktober 2003 Det virker ikke som om Indeks testeren funker(gyldigIndeks). finnTemperatur funker hvis jeg ikke bruker if setningen(if(gyldigIndeks(dagnr,timenr))). Dere kan se bortifra andre metoder en finntemperatur(). Hvorfor vill ikke gyldigIndeks funke? Lenke til kommentar
Hårek Skrevet 8. oktober 2003 Del Skrevet 8. oktober 2003 Jeg ser i alle fall 2 feil: antDager er en global variabel. Men når du setter verdien på den i Temperaturer så lager du en ny lokal variabel. Dermed er den globale lik 0. Det andre er middeltempForAlleDager[antDager]. Du har et array som er antDager stort, da er index lik 0 til antDager - 1. Så du får ArrayIndexOutOfBoundsException. Lenke til kommentar
tounela Skrevet 8. oktober 2003 Forfatter Del Skrevet 8. oktober 2003 ok. Hvordan fikser jeg dette da? Lenke til kommentar
tounela Skrevet 8. oktober 2003 Forfatter Del Skrevet 8. oktober 2003 glemm det. Fikk det til nå :smile: Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå