Java Schleife schreiben?

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?


Woher ich das weiß:Berufserfahrung – Berufstätigkeit als Software-Entwickler

shalom8495 
Beitragsersteller
 18.10.2022, 17:07
 i = i + 1;
variable i might not have been initialized

Vielen Dank für deine Hilfe, das hat mir schonmal sehr weitergeholfen wie man da richtig rangeht. Ich erhalte allerdings die obige Fehlermeldung?

BorisG2011  18.10.2022, 17:10
@shalom8495

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;