Java Schleife schreiben?
Hallo zusammen,
ich bin schon seit Stunden am überlegen und probieren, wie man die folgende Aufgabe lösen kann. Momentan sind wir beim Thema simple Schleifen und Verzweigungen . (For, while, do-while, rekursion und if-else)
Dabei rumgekommen ist leider fast nichts. Ich bin momentan wieder an dem Punkt zurück, dass ich mal eine Zählvariable erstellt habe. Man muss ja die Durchgänge zählen können, bis die Summe grösser oder gleich "Total" ist.
Bin noch absoluter Anfänger in Java und wäre daher sehr froh, wenn mir jemand seine Herangehensweise und Überlegungen mitteilen könnte.
Vielen Dank!
1 Antwort
Hast du dir ein Beispiel zurechtgelegt, um die Aufgabe besser zu verstehen? Wenn du zum Beispiel mit dem Startwert 5 startest, und solange größer werdende Zahlen addierst, bis zu den Wert 20 erreichst oder überschreitest, dann läuft das auf diese Summe hinaus:
5 + 6 + 7 + 8 ( = 26)
Das sind vier Summanden.
In deiner Methode hast du im Augenblick die Variable i, mit der die die Anzahl der Schleifendurchläufe zählst. Das ist völlig richtig, und für die Lösung der Aufgabe brauchst du diese Variable tatsächlich.
Mit der Variablen i alleine wirst du aber nicht zum Ziel kommen. Du brauchst minstestens noch eine Variable für die Summenbildung. In dem oben genannten Beispiel wird diese Variable während aufeinanderfolgender Schleifendurchläufe die Werte 5, 11, 18 und 26 annehmen.
Da du aufsteigende Zahlen addieren sollst, wirst du darüber hinaus noch eine Variable brauchen, die dir den jeweils nächsten Summanden angibt. In meinem Beispiel wird diese Variable den Anfangswert 5 annehmen und während aufeinanderfolgender Schleifendurchläufe die Werte 6, 7 und 8 annehmen.
Die Methode könnte dann so ausshen:
public static in count (int start, int total) {
int i;
int teilsumme = 0;
int summand = start;
do {
teilsumme = teilsumme + summand;
summand = summand + 1;
i = i +1;
} while (teilsumme < total);
return i
}
Was meinst du dazu?
Tatsächlich. Das ist mein Fehler. Sorry. In deinem ursprünglichen Code steht allerdings das, was du tun must - das habe ich nicht mal richtig abgeschrieben. Du musst für i den Anfangswert 0 zuweisen.
Schreibe also bitte statt
int i;
das, was du ursprünglich hattest, nämlich
int i = 0;
Vielen Dank für deine Hilfe, das hat mir schonmal sehr weitergeholfen wie man da richtig rangeht. Ich erhalte allerdings die obige Fehlermeldung?