Gå til innhold

Null Pointer Exception


Anbefalte innlegg

Jeg driver med en oppgave der jeg har skal slette en lagret verdi (i mitt tilfelle, en verdi lagret i et array). Jeg ble opplyst om at en mulighet var å sette selve arrayet likt null, slik som "array[j] = null". Dette funker greit, men så snart jeg prøver å printe ut verdien som ligger lagret i arrayet så kommer det opp en feilmelding "NullPointerException".

 

Det jeg lurer på er om det finnes en annen måte å slette en lagret verdi på i et array? I mitt tilfelle så inneholder arrayet strings.

 

Jeg har også prøvd å simpelthen gi stringene en annen verdi, og dette har funket. Men da dukker et annet problem opp. Programmet skal i følge oppgaven være laget slik at at dersom man velger å lagre en ny verdi etter at en annen verdi ble slettet i arrayet, så skal denne verdien bli lagret på den første ledige plassen. Noe som ikke skjer dersom jeg bare endrer verdiene til stringen. Så, hvordan endrer man dette til et helt nytt, tomt objekt?

 

Jeg kan også laste opp deler av koden men bare hvis det blir nødvendig.

Lenke til kommentar
Videoannonse
Annonse

Du skal ikke få nullpeker med mindre du prøver å gjøre noe eksplisitt med strengen før du skriver den ut, for eksempel kjøre String.length på den.

 

La oss si at du har satt data[j] = null, da skal System.out.print([j]); skrive "null" på skjermen (se gjerne String.valueOf() for mer om dette).

 

Du vil naturligvis iterere over hele arrayet og alltid sjekke om cellen inneholder null, hvis den gjør det, er den ledig, og du kan lagre data der.

 

Det er riktig å sette null eksplisitt i arrayet. Men hvorfor har du et todimensjonalt array, og kan du printe stacktrace samt linjene det gjelder?

Lenke til kommentar

Bah, var min egen feil (er nybegynner). Det var bare det at jeg glemte å ta med et nytt objekt, selvsagt med tomme verdier :) (fra linja "new Flat......")

 

Bare for å høre med noen fagfolk om dette er helt riktig med tanke på å opprette et nytt objekt med tomme verdier (det funker for meg):

 

char character = 'A';

System.out.println("*Register a tenant moving out*");

System.out.println("Please type in person's first name:");

String name = input.getString();

System.out.println("Please type in person's surname:");

String surname = input.getString();

 

for (int i = 0; i < 3; i++)

{

for (int j = 0; j < 5; j++)

{

if (flats
[j].getStud() != null)

{

if (flats
[j].getStud().getName().equals(name))

{

if (flats
[j].getStud().getSurname().equals(surname))

{

flats
[j] = new Flat ("" + (i) + character);

character++;

System.out.println("Registration completed. This flat is now empty.");

return;

}

 

Dette gjorde jeg i stedet for å sette "flats[j] = null". Foresten, dette er en del av koden for å slette verdien. Når jeg nå for eksempel sletter en verdi som har posisjon "1B" (arrayet er basert på en bokstav + et tall),så vil lista se sånn ut:

 

1A - Populated

1B - Empty

1C - Populated.... osv.

 

Takk for tips.

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