Domanda

Sto creando un gioco e richiede un numero infinito di rettangoli. Ad esempio, diciamo che ho nominato le variabili Auto:

public Rectangle car1;
public Rectangle car2;
public Rectangle car3;
.

E così via,

Ci sarebbe un modo più semplice?Come:

public int carNumber;
public Rectange car + carNumber;//if carNumber was one, it would be called car1
.

Inoltre, dovrò testare se i rettangoli contengono altri.<- So come fare questo.

È stato utile?

Soluzione

Non puoi e non dovrebbe cercare di dichiarare un numero infinito di qualsiasi cosa - non ha senso.Utilizzare invece una collezione come un arrayList che può contenere un numero variabile di riferimenti di oggetti.ad esempio.,

private List<Rectangle> carList = new ArrayList<>();
.

Questo non funzionerà:

public Rectange car + carNumber;//if carNumber was one, it would be called car1
.

Poiché i nomi delle variabili non funzionano in questo modo, non possono essere creati con stringhe concatenate.Ma non preoccuparti, perché l'arraylist si prenderà cura di questo.Il terzo elemento nella lista sarebbe ottenibile abbastanza facile: carList.get(2).


.

Per vedere se alcuni rettangoli nell'elenco contengono un altro rettangolo utilizzano un loop e iterano attraverso la raccolta:

for (Rectangle rect : carList) {
  if (rect.contains(testRectangle) {
     // this item contains the test Rectangle
  }
}
.

Altri suggerimenti

Utilizzare un arrayList per fare questo

Gli array sono static memory allocation.Hai sempre Devi indicare la dimensione dell'array sulla creazione dell'array, quindi non è possibile avere un array "infinito".Quello che stai cercando è chiamato dynamic memory allocation.

Un esempio di utilizzo della memoria dinamica è ArrayList.

ArrayList consente di espanderelo quando gli elementi vengono aggiunti e si restringono quando gli elementi vengono rimossi.È possibile espandere le dimensioni di un ArrayList così chiamato "infinitamente" continuando a aggiungere elementi in esso. Comunque Il limite per il numero di elementi che è possibile aggiungere ad esso dipende da quanta memoria ha il tuo sistema.

Fondamentalmente, dynamic memory allocation è ciò che stai cercando.Potresti anche considerare l'utilizzo di Vector.

Scusa non puoi farlo a Java.Non è possibile creare un nome variabile dinamicamente.

.

Sto creando un gioco e richiede un numero infinito di rettangoli.

Otterrai OutOfMemory in caso di numero infinito di rettangoli.Per favore pensaci di nuovo.


.

È possibile utilizzare un array statico se il numero di rettangoli è già noto.

Rectangle[] rec = new Rectangle[size];  

//get the first Rectangle 
Rectangle first = rec[0];

// get the total no of Rectangles
int length = rec.length();
.

In codice generale come:

car1 = "blue";
car2 = "red";
car3 = "green";
.

è il 99% del tempo meglio espresso come array

cars = ["blue", "red", "green"]
.

In Java Arrays sono di lunghezza fissa quando li inizializza, in modo da poter solo creare uno o è possibile utilizzare un arrayList come un commentatore sopra menzionato che è una struttura di elenco che consente una per una aggiunta.

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top