Gå til innhold

[Løst]String array og if løkke?


Anbefalte innlegg

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 av Hoel
Lenke til kommentar
Videoannonse
Annonse

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 av Hoel
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...