Frage von MarcoSwatch, 36

Kann nach jedem Schleifendurchlauf in Java ein Variablename geändert werden?

int zeile = 4;
int spalte = 0;

for(int a = 1; a <= 10; a++)

{

Label time = new Label(spalte, zeile, getTime);

wsheet.addCell(time);

wworkbook.write();

zeile = zeile + 1;

Thread.sleep(10000);

}

Meine Frage jetzt:

Gibt es einen Weg, den Labelname "time" bei jedem Schleifendurchlauf zu ändern?

Bsp.:

  1. Druchlauf --> time
  1. Durchlauf --> time2

usw...

Expertenantwort
von KnusperPudding, Community-Experte für Java, 12

Nein, aber warum solltest du das denn wollen?

Würdest du dynamisch Variablennamen erzeugen, könntest du ja nie darauf referenzieren, da du diese ja vor der Laufzeit entsprechend verwenden würdest, sie jedoch erst zur Laufzeit generiert werden würden.

Du könntest höchstens eine Array verwenden:

Label[] times = new Label[20];

in deiner Schleife kannst du dann entsprechend dynamisch drauf zugreifen:

for (int i = 0; i < 20; i++) {
  times[i] = new Label(spalte, zeile, getTime());
  wsheet.addCell(times[i]);
}
Antwort
von oelbart, 27

Soweit ich weiß geht das nicht direkt, allerdings könntest Du entweder ein Array verwenden und dann time[0], time[1] usw beschreiben (also time[a])

Oder aber Du nimmst die Krücke

if (a==0)

time...

(wobei das dem Sinn der Schleife ziemlich zuwiderläuft...)

Kommentar von JupStrunk ,

Oder aber Du nimmst die Krücke



if (a==0)

time...


(wobei da



zumal a niemal 0 sein kann !!! :D

Kommentar von oelbart ,

Man reiche mir eine Zigarette, auf dass ich Asche auf mein Haupt streuen kann :D

Antwort
von JupStrunk, 18

nein, das geht so nicht !!!

was Du machen kannst, ist ein "Array" zu definieren !!! ;)

in deinem Fall währe das dann "vor der Schleife": 

Label time[11];

in der Schleife kannst Du dann die einzelnen Elemente so aufrufen:

time[a] = new Label(spalte, zeile, getTime);
Kommentar von MarcoSwatch ,

Hab ich auch schon versucht. Das Problem war, dass Java "time[a]" als Variablename anschaut und nicht den Inhalt. Das heisst Java sieht den Namen der Variable "Label time[a]" als "Label time[a]" und nicht als "Label <Inhalt von time[a]>"

Kommentar von JupStrunk ,

äh, was, bitte ???

"Label time[a]" ist kein Name einer Variablen, das ist die Definition (Deklaration) einer Variablen, bzw. eines Arrays von Variablen !!!

wenn Du auf die einzelnen Elemente zugreifen willst, musst Du das "Label" am Anfang weg lassen !!! ;)

Keine passende Antwort gefunden?

Fragen Sie die Community