Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...