4 svar
100 visningar
civilingengör behöver inte mer hjälp
civilingengör 193
Postad: 2 apr 2022 20:22

Jämförelse (int a !=null)

Hej! Varför fungerar inte denna jämförelse? Och har någon förslag på alternativ som istället kan användas? Jag vill med koden säga: "så länge det finns ett värde på detta index skall ett slumptal genereras", hur kan man uttrycka detta? (Ni behöver inte bry er om övrig kod)

Programmeraren 3390
Postad: 2 apr 2022 20:34

En int kan aldrig vara null, det är en primitiv och inte ett objekt.

Jag fattar din beskrivning som att du vill skapa slumptal, kolla om platsen i den 2-dimensionella matrisen board är ledig, och i så fall stoppa in något där. Annars dra nya slumptal. Nåt i den här stilen:

while (true) {
  int randR = rand.nexInt(size);
  int randC = rand.nexInt(size);
  if (board[randR][randC] == null) {    // check if slot is free
    board[randR][randC] = stack[i];     // yes, assign and break loop
    break;
  }
}

civilingengör 193
Postad: 3 apr 2022 09:23

Tack så mycket! Om jag förstår dig rätt så kan objekteten i en array kan vara null, vilket då signalerar en ledig plats? 

Programmeraren 3390
Postad: 3 apr 2022 09:36

Det kan man säga, ska man vara petig är det referensen (till objektet) som är null.

Objekten ligger i minnet på olika adresser. Referensen pekar på minnesadressen. Till exempel:

Ball redBall = new Ball("red");
Ball blueBall = new Ball("blue");

skapar två objekt. Dvs två minnesareor allokeras och initieras. Variablerna redBall och blueBall är referenser till dessa. Om vi sen gör

blueBall = redBall;

så kommer båda variablerna att referera samma objekt, dvs peka på samma minnesblock (och minnesblocket för det som blueBall tidigare pekade på kommer att städas bort av GC:n, garbage collector, för återanvändning).

civilingengör 193
Postad: 3 apr 2022 10:22

Tack så mycket för din tid och hjälp!

Svara
Close