Hoel Skrevet 30. september 2009 Del Skrevet 30. september 2009 (endret) Har en oppgave hvor jeg skal kjøre følgende kode: if (eier[rad][kol] != null){ eier[rad][kol] = kjøper; System.out.println(kjøper + "har nå kjøpt felt: " + rad + "-" + kol); } men jeg får feilmeldingen java.lang.NullPointerException Jeg lurte derfor på om det var en bedre måte å sjekke om eier[rad][kol] var tom. Er forholdsvis ny når det gjelder java så trenger det sikkert inn med litt teskje og om jeg har glemt å nevne noe relevant så er det bare å si ifra. rad og kol er int verdier forsåvidt. Endret 30. september 2009 av Hoel Lenke til kommentar
Joachricar Skrevet 30. september 2009 Del Skrevet 30. september 2009 Kan godt få se litt mer her Skal funke å sammenligne med null. Lenke til kommentar
Largie Skrevet 30. september 2009 Del Skrevet 30. september 2009 Nå er jeg ikke en java-ekspert, men har erfaring med C++. ÆØÅ i variabler; fy, fy! Kan det være så enkelt at den hiver exception på "kjøper" Lenke til kommentar
V5R1X Skrevet 30. september 2009 Del Skrevet 30. september 2009 Du sjekker vel nå om "eier[rad][kol]" ikke er "null"? Hvis du skal se om "eier[rad][kol]" er tom, så må du vel bytte ut "!=" med "==" ? ...en stund siden jeg lærte java selv da... Lenke til kommentar
Joachricar Skrevet 30. september 2009 Del Skrevet 30. september 2009 Godt poeng det og, men skal vel ikke ha noe med exceptionen å gjøre? Lenke til kommentar
Hoel Skrevet 30. september 2009 Forfatter Del Skrevet 30. september 2009 (endret) Hele feilmeldingen jeg fikk var som følger : Exception in thread "main" java.lang.NullPointerException at Olje.kjøpFelt(Oblig2.java:62) at Olje.ordreløkke(Oblig2.java:37) at Oblig2.main(Oblig2.java:6) Og på alle de linjene er det brukt "ø". Var sånn i malen som fulgte med oppgaven. Men får fortsatt samme feil når jeg bytter ut ø med o Stemmer som du sier J-Core, det skal være ==. "liten" blunder der:P Hele koden er : import easyIO.*; class Oblig2 { public static void main(String[] args) { Olje ol = new Olje(); ol.ordrelokke(); System.out.println("Takk for nå"); } } class Olje { In tast = new In(); Out skjerm = new Out(); String[][] eier; int[][] utvunnet; void ordrelokke() { int ordre = 0; while (ordre != 6) { System.out.println("*** VELKOMMEN TIL UTOPIAS OLJEFELTOVERSIKT ***"); System.out.println("Du har følgende valgmuligheter:"); System.out.println("1) Kjøp felt"); System.out.println("2) Lag feltliste"); System.out.println("3) Lag oversiktskart"); System.out.println("4) Halvårsoppdatering"); System.out.println("5) Lag statistikk"); System.out.println("6) Avslutt"); System.out.println("Velg kommando:"); ordre = tast.inInt(); switch (ordre) { case 1: kjopFelt(); break; case 2: lagFeltliste(); break; case 3: lagOversiktskart(); break; //case 4: giHalvårsoppdatering(); break; //case 5: lagStatistikk(); break; //case 6: Avslutt(); break; default: break; } } } // De andre metodene (en for hver ordre): void kjopFelt() { System.out.println("** Kjøp felt **"); System.out.print("Oppgi raden feltet som ønskes kjøpt er plassert på: "); int rad = tast.inInt(); System.out.print("Oppgi kolonnen i rad: " + rad + " for kjøp av felt: "); int kol = tast.inInt(); System.out.println("Du valgte felt: " + rad + "-" + kol); System.out.print("Oppgi navn på kjøper: "); String kjoper = tast.inWord(); if (eier[rad][kol] == null){ eier[rad][kol] = kjoper; System.out.println(kjoper + "har nå kjøpt felt: " + rad + "-" + kol); } else { System.out.println("Feltet eies nå av: " + eier[rad][kol]); System.out.print("Skal en nye kjøpern overta feltet? j/n"); char j = 'j'; j = tast.inChar("\n\r"); String tomRestenAvLinja = tast.inLine(); if (j != 'n') { eier[rad][kol] = kjoper; } else { System.out.println("Du valgte nei, start på nytt."); } } } void lagFeltliste() { } void lagOversiktskart() { } // < Her legger du de øvrige metodene du trenger > } Feilemdligen er nå Exception in thread "main" java.lang.NullPointerException at Olje.kjopFelt(Oblig2.java:62) at Olje.ordrelokke(Oblig2.java:37) at Oblig2.main(Oblig2.java:6) Linje 62 inneholder : "if (eier[rad][kol] == null){" Linje 37 inneholder : case 1: kjopFelt(); break; Linje 6 inneholder : ol.ordrelokke(); Programmet compiler fint, starter, men når man velger "Kjøp felt" og skriver inn de 3 variablene der, altså felt nr og navn på kjøper så kommer feilmeldingen over. Endret 30. september 2009 av Hoel Lenke til kommentar
don_Vito Skrevet 30. september 2009 Del Skrevet 30. september 2009 Et lite hint til skoleoppgaven din: Du må allokere minne for tabellen din. Lenke til kommentar
Hoel Skrevet 30. september 2009 Forfatter Del Skrevet 30. september 2009 (endret) I java holder det vel å skrive: String[][] eier; int[][] utvunnet; For å lage tabeller? Siden java ikke krever at man allokerer minne selv? edit: leif Endret 30. september 2009 av Hoel Lenke til kommentar
don_Vito Skrevet 30. september 2009 Del Skrevet 30. september 2009 http://lmgtfy.com/?q=java+array Lenke til kommentar
Hoel Skrevet 30. september 2009 Forfatter Del Skrevet 30. september 2009 Takker, kom på hva du mente etter å ha lest igjenom koden engang til, før du googlet for meg Lenke til kommentar
don_Vito Skrevet 30. september 2009 Del Skrevet 30. september 2009 Fint! Da er det vel etikette å legge inn løsningen på problemet ditt? Lenke til kommentar
Hoel Skrevet 30. september 2009 Forfatter Del Skrevet 30. september 2009 Problemet lå på linje 16 og 17, hvor det orginalt var følgende kode: String[][] eier; int[][] utvunnet; Mens det egentlig skal se sånn her ut: String[][] eier = new String[11][17]; int[][] utvunnet = new int[11][17]; 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å