Stian_ Skrevet 21. oktober 2004 Skrevet 21. oktober 2004 Har et lite problem med min obligatoriske oppgave på kurset INF1000. Feilmeldingen er: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 65 at HybelHus.<init>(Oblig3.java:42) at Oblig3.main(Oblig3.java:353) feilen kan komme fra: class HybelHus { Hybel[][] hyblene = new Hybel[4][8]; HybelHus(String filnavn) { //Hybel[][] hyblene = new Hybel[4][8]; for (int a=0;a<4;a++) { for (int b=0;b<8;b++) { char b2 = (char) (a + 'A'); hyblene[a][b2] = new Hybel(a,b2); } //end for b } //end for a class HybelHus { Hybel[][] hyblene = new Hybel[4][8]; HybelHus(String filnavn) { for (int a=0;a<4;a++) { for (int b=0;b<8;b++) { char b2 = (char) (a + 'A'); hyblene[a][b2] = new Hybel(a,b2); } //end for b } //end for a (...) eller class Oblig3: class Oblig3 { public static void main(String [] args) { HybelHus h = new HybelHus("HaiHus.data"); h.meny(); } //end main } //end Oblig3 kan legge ut java-filen, men frister meg lite. er det nødvendig, så si ifra.
gnab Skrevet 21. oktober 2004 Skrevet 21. oktober 2004 char b2 = (char) (a + 'A'); hyblene[a][b2] = new Hybel(a,b2); Hva er hensikten med b2? Hvilke parametere har konstruktøren til Hybel?
Stian_ Skrevet 21. oktober 2004 Forfatter Skrevet 21. oktober 2004 b2 er bare en omforming fra char til int. de to classene som kan være nyttig: class Student { int elektrisitet; int saldo; String navn; Student(String navn, int saldo) { this.navn = navn; this.saldo = saldo; } //end Student konstrukt�r } //end class Student class Hybel { Student leietager; int gang; char bokstav; Hybel(int gang, char bokstav) { this.gang = gang; this.bokstav = bokstav; } //end Hybel konstrukt�r } //end class Hybel
gnab Skrevet 21. oktober 2004 Skrevet 21. oktober 2004 Prøv slik da: char b2 = (char) (a + 'A'); hyblene[a][b] = new Hybel(a,b2); b2 kan ikke brukes om indeks i listen..
Stian_ Skrevet 21. oktober 2004 Forfatter Skrevet 21. oktober 2004 retta litt på koden, skjønte hva du mente med b2. men hva er feilen her da? forandra: for (int a=0;a<4;a++) { for (int b=0;b<8;b++) { hyblene[a][b] = new Hybel(); } //end for b } //end for a feilmelding /uio/platon/mn-l12/stianvi/inf1000/oblig3/newObl/Oblig3.java:41: Hybel(int,char) in Hybel cannot be applied to () hyblene[a][b] = new Hybel(); ^ 1 error
gnab Skrevet 21. oktober 2004 Skrevet 21. oktober 2004 (endret) Du endra litt for mye tror jeg.. for (int a=0;a<4;a++) { for (int b=0;b<8;b++) { char b2 = (char) (a + 'A'); hyblene[a][b] = new Hybel(a,b2); } //end for b } //end for a Endret 21. oktober 2004 av gnab
Stian_ Skrevet 22. oktober 2004 Forfatter Skrevet 22. oktober 2004 hmm, kanskje - men den for-løkken hadde noen feil. Får se på det i morra, nå legger jeg meg. takker for hjelpen.
buskmann Skrevet 22. oktober 2004 Skrevet 22. oktober 2004 Dette er ikke noe pekerproblem (i ett ord). Ganske enkelt fordi pekere er noe man har i C/C++ og ikke i Java.
Brandvold Skrevet 22. oktober 2004 Skrevet 22. oktober 2004 (endret) Oblig er morro:) Endret 22. oktober 2004 av Brandvold
Nudo Skrevet 22. oktober 2004 Skrevet 22. oktober 2004 (endret) Legg ut fila, så kan jeg prøve å kjøre det her og se om jeg får noe ut av det. Er uansett litt nysgjerrig på hvordan oppgavene deres ser ut, og hvordan dere legger det fram:) Endret 22. oktober 2004 av Nudo
adyton Skrevet 22. oktober 2004 Skrevet 22. oktober 2004 Dette er ikke noe pekerproblem (i ett ord). Ganske enkelt fordi pekere er noe man har i C/C++ og ikke i Java. På UiO inf1000 har vi pekere i java..
Brandvold Skrevet 22. oktober 2004 Skrevet 22. oktober 2004 (endret) Så vidt jeg skjønner så betyr feilmeldinga at det ikke er nok plass i arrayen, og i dette tilfellet er det fordi du søker igjennom en rad og en kolonne for mye i for-løkka di. for (int a=0;a<4;a++) { for (int b=0;b<8;b++) { [CODE] Arrayindex starter på 0, og når du har 4*8 array så må du søke igjennom med 3 og 7. for (int a=0;a<3;a++) { for (int b=0;b<7;b++) { Så skal det nok fungere:) Endret 22. oktober 2004 av Brandvold
gnab Skrevet 22. oktober 2004 Skrevet 22. oktober 2004 (endret) Grunnen til at han fikk feilmeldinga var at han prøvde å skrive til et element b2 som ikke eksisterer i listen.. For-løkken fungerer helt fint.. for (int a=0;a<3;a++) { for (int b=0;b<7;b++) { ... } } Disse to for-løkkene vil går fra henholdsvis 0-2 og 0-6.. a++ og b++ blir kjørt etter hver løkke, ikke før.. Endret 22. oktober 2004 av gnab
obotron Skrevet 22. oktober 2004 Skrevet 22. oktober 2004 Dette er ikke noe pekerproblem (i ett ord). Ganske enkelt fordi pekere er noe man har i C/C++ og ikke i Java. På UiO inf1000 har vi pekere i java.. Pekere i C/C++ er noe helt annet enn hva enn hva "pekere" i java er... Dette kommer du til å finne ut i seinere kurs!
lodott Skrevet 22. oktober 2004 Skrevet 22. oktober 2004 Er char et tall i java som i c(++) ? Hvis jeg husker rett så er det ikke det..
smetho Skrevet 22. oktober 2004 Skrevet 22. oktober 2004 char er en bokstav i Java...(kan jo vel bestå av tall også da, men det er ikke egentlig et tall )
lodott Skrevet 22. oktober 2004 Skrevet 22. oktober 2004 char er en bokstav i Java...(kan jo vel bestå av tall også da, men det er ikke egentlig et tall ) Ja..så da vil jo "hyblene[a][b2]" bli galt når "b2" er en char.
buskmann Skrevet 22. oktober 2004 Skrevet 22. oktober 2004 Er char et tall i java som i c(++) ?Hvis jeg husker rett så er det ikke det.. Stemmer. Å caste mellom int og char funker fint i C, går på trynet i Java.
Stian_ Skrevet 22. oktober 2004 Forfatter Skrevet 22. oktober 2004 Har fiksa det for lengst, men takker for hjelpen. er snart ferdig nå. må bare skrive til fil og lage en øko rapport. lyst til å se hvordan oblig'n ser ut? vel, her er oppg.: http://www.ifi.uio.no/~inf1000/obliger/oblig3.pdf
Nudo Skrevet 22. oktober 2004 Skrevet 22. oktober 2004 Løsningsforslag til den? Eller har ikke leveringsfristen gått enda?
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å