Gå til innhold

Oblig3 - peker problem


Anbefalte innlegg

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.

Lenke til kommentar
Videoannonse
Annonse

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

Lenke til kommentar

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

Lenke til kommentar

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 av gnab
Lenke til kommentar

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 av Nudo
Lenke til kommentar

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 av Brandvold
Lenke til kommentar

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 av gnab
Lenke til kommentar
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.. :yes:

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! :)

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...