Falsche Deklaration?

Nanaki

Erfahrenes Mitglied
Hi,

irgendwie komme ich bei der Array Deklaration nicht ganz klar.

Code:
	public static void main(String[] args) {
		int w = 10, kollie[], welle[];
		kollie = welle = new int[w+1];
		kollie[0] = 500;
		for (int i = 1; i <= w; i++) {
			welle[i] = (int) (kollie[i-1] * 0.15);
			System.out.print( welle[i] );
			kollie[i] = kollie[i-1] - welle[i];
			System.out.println( " " + welle[i] );
		}
	}

Die Consolenausgabe ist:

75 425
63 362
54 308
usw.

Soweit sogut, doch was ich nicht ganz verstehe ist:
Warum wird der Array welle[i] bei er Deklarierung von kollie[i] gleich dem Ergebnis von kollie[i] gesetzt?
Eigentlich sollte dort gar keine neue Zuweisung stattfinden, oder?

Wäre nett, wenn mir jemand helfen könnte.

mfg
Lord_of_Vampire
 
Code:
	public static void main(String[] args) {
		int w = 10, kollie[], welle[];
		kollie = welle = new int[w+1];
		kollie[0] = 500;
		for (int i = 1; i <= w; i++) {
			welle[i] = (int) (kollie[i-1] * 0.15);
			System.out.print( welle[i] );
			kollie[i] = kollie[i-1] - welle[i];
			System.out.println( " " + welle[i] );
		}
	}

>Warum wird der Array welle[i] bei er Deklarierung von kollie[i] gleich dem >Ergebnis von kollie[i] gesetzt?
>Eigentlich sollte dort gar keine neue Zuweisung stattfinden, oder?

Welche Zeile meinst Du? Diese hier:

Code:
kollie = welle = new int[w+1];

?
Die weist ja noch nichts zu, sondern besagt nur, dass die Arrays kollie und welle int-Arrays von der Größe 11 festgelegt werden.
 
Sorry, ich hab mich vielleicht etwas schlecht ausgedrückt.

Ich meinte eher den Code in der for-Schleife.

Code:
welle[i] = (int) (kollie[i-1] * 0.15);
System.out.print( welle[i] );
kollie[i] = kollie[i-1] - welle[i];
System.out.println( " " + welle[i] );

Dort wird der Array welle[I] erstmal richtig zugewiesen, was das Ergebnis durch
Code:
System.out.print( welle[i] );
zeigt.
Bei der 2ten Deklaration will ich die restliche Anzahl von den 500 zwischen speichern, das durch den Array kollie[i] geschieht. Jedoch wird bei dieser Deklaration auch der Array welle[I] neu zugewiesen, welches das Ergebnis durch
Code:
System.out.println( " " + welle[i] );
zeigt.

Und ich verstehe nun nicht, warum welle[i] neue deklariert wird, denn eigentlich mache ich im 2ten Schritt nur eine Deklaration des Arrays kollie[i].
 
Zuletzt bearbeitet von einem Moderator:
ich fürchte, dass liegt daran, dass beide arrays im selben speicher liegen.

kollie = welle = new int[w+1];

heist auf deutsch: kollie und welle sind 1 Array mit 2 Namen.

ändere das in:

kollie=new int[w+1];
welle=new int[w+1];

und schon hast du 2 Arrays. Dann müsste es klappen.
 
Zurück