Schleifen ergebnis zusammenfassen

  • Themenstarter Themenstarter lidZ1
  • Beginndatum Beginndatum
L

lidZ1

Gast
Servus zusammen,

wie kann ich meine ergebnisse von einer While Schleife zusammenfassen

Beispiel:

int x = 1;
int y = 2;
int z = 3;
int ergebnis = 0;

while (x <5) {
z = z+y;
x = ++1
}
Syso = z erster Durchgang / z zweiter Durchgang usw

Wie geht das?
 
Wenn man ausserhalb der Schleife auf Zustände, die während dem Schleifendruchgang "herrschten" zurückgreifen will, muss man diese Zustände speichern.
Evtl. z als int Array definieren bzw. ein zusätzliches int Array einführen, um darin den jeweiligen Zustand während der einzelnen Durchgänge zu speichern.
 
Ich habe folgendes Probiert:

Code:
int x = 1;
int y = 2;
int z = 3;
int[] array = new int[5];

while (x <5) {
z = z+y;
x = ++1
array[5] = y;
}
Syso(array[5]);

bekomme aber kein ergebnis
 
Warum nutzt Du nicht direkt eine for Schleife?

Ein mit 5 initialisiertes Array hat nur die Indizes 0 bis 4. ein array[5] wirf eine ArrayOutOfBoundsException.
In der Schleife musst Du die Werte natürlich abhängig vom Schleifenzähler x in die Felder des Arrays speichern.
y ins Array zu speichern macht keinen Sinn, da sich der Wert von y nie verändert. z wird verändert.
 
Das oben war nur ein Beispiel:

Ich möchte den Array gerne in folgender Anweisung einbringen:

Code:
		int zahl = 3;
		
		int i = 2;
		int x = 0;
		int y = 0;
		int[] array = new int[10];

		while(zahl > 0) {
		x = zahl / i;
		y = zahl % i;
		vorkomma = x;
		array[10] = y ;
		}
		System.out.println(array[10]);
 
Eine Änderung

zahl = x;

Code:
		int zahl = 3;
		
		int i = 2;
		int x = 0;
		int y = 0;
		int[] array = new int[10];

		while(zahl > 0) {
		x = zahl / i;
		y = zahl % i;
		zahl = x;
		array[10] = y ;
		}
		System.out.println(array[10]);
 
Code:
		int[] array = new int[10];
...
		array[10] = y ;
Wie gesagt, das geht nicht ein Array mit 10 Feldern besitzt als größten Index 9. Die Felder werden von 0 bis n-1 durch nummeriert.
Ausserdem nutzt hier ein Array wenig wenn man aufgrund des festen Indizes nur ein Feld davon nutzt.

Auch ist mir der Sinn, das Ziel des Codes nicht klar. Beschreibe doch mal mit Worten was da genau gemacht werden / passieren soll.
 
Code:
		int zahl = 3;
		
		int i = 2;
		int x = 0;
		int y = 0;
		int[] array = new int[10];

		while(zahl > 0) {
		x = zahl / i;
		y = zahl % i;
		zahl = x;
		array[10] = y ;
		}
		System.out.println(array[10]);

Die Zahl 3 soll in Binär dargestellt werden.
Ich nehme die Zahl 3 und teile sie durch 2 und nehme den Rest.
Der rest = y soll ausgegeben werden.

Mit Syso in der Schleife klappt es auch wunderbar.

Das Problem ist nur das ich Zahlen in der falschen Reihenfolge ausgegeben werden.
z.B. 8 = 1000 bei mir = 0001
 
wenn du dir -was du nicht machst- tatsächlich deine Zahlen in ein Array schreibst, dann kannst du das Array doch rückwärts durchlaufen:

Java:
array = new int[] { 1, 0, 0, 0 };
		for (int j = array.length - 1; j >= 0; j--) {
			System.out.println(array[j]);
		}

aber da du in deinem Code wieder irgendwas von
Code:
int[] array = new int[10];
Code:
array[10] = y ;
stehen hast und mehrmals darauf hingewiesen wurdest, dass der Zugriff auf ein Array der Größe
Code:
n
nur von
Code:
 0
bis
Code:
n-1
möglich ist, denke ich das es keinen Sinn macht...
 

Zurück
Oben