Java: Multiplizieren/Reihe mit Schleife?
Methode malReihe: Der Startwert wird erst mit 1 und dann immer eins mehr multipliziert, bis die Reihenlänge erreicht ist.
Beispiel: Startwert 2, Reihenlänge 5 -> Ausgabe: 2 4 6 8 10
Scanner sMul = new Scanner(System.in);
int mzahl = sMul.nextInt();
int smul = 1;
for(int i = mzahl; i <= 5; i++){
System.out.println(i+" ");
i++;
}
Leider kommt es nur <2 und 4> raus
Aber es muss 5 reihe sein, was ist der fehler?
4 Antworten
![](https://images.gutefrage.net/media/user/VeryBestAnswers/1569701765554_nmmslarge__0_0_1000_1000_ae38d2d21f6e3a10a60fbb9429d0db71.png?v=1569701766000)
Die for-Schleife besteht aus 3 Bestandteilen:
for (int i = mzahl; i <= 5; i++) {
- Der erste Bestandteil ist die Initialisierung. Der Variablen i wird die Variable mzahl zugewiesen.
- Der zweite Bestandteil ist eine Bedingung. Die Schleife wird nur wiederholt, solange die Bedingung wahr ist! Du prüfst hier, ob i kleiner oder gleich 5 ist. Das heißt, wenn i größer als 5 ist, wird die Schleife abgebrochen.
- Der dritte Bestandteil ist ein Inkrement. Hier wird die Variable i um 1 erhöht. Dies wird am Ende von jedem Schleifendurchlauf durchgeführt.
Ein Problem ist, dass i doppelt erhöht wird, nämlich sowohl in der letzten Komponente der for-Schleife, als auch in der vorletzten Zeile.
Das nächste Problem ist, dass du anscheinend deine Variable verwechselst. Wenn du willst, dass die Schleife genau 5 mal ausgeführt wird, musst du i mit 1 initialisieren, und darfst sie innerhalb der Schleife nicht verändern:
for (int i = 1; i <= 5; i++) {}
Hinzu kommt, dass du die Aufgabe entweder nicht verstehst, oder nicht richtig erklärt hast.
Der Startwert wird erst mit 1 und dann immer eins mehr multipliziert, bis die Reihenlänge erreicht ist.
Das ergibt meiner Meinung nach bei einem Startwert von 2 und einer Reihenlänge von 5:
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Das was bei einer for-schleife als Drittes drinnensteht wird am Ende jedes Durchgangs ausgeführt.
for(...,...,i++) bedeutet, dass am Ende jedes Durchgangs i um 1 erhöht wird.
Wenn du nun also noch zusätzlich i++ jeden Durchgang machst (in deinem Code nachdem System.out.println() ), und es wegen der forschleife dann nochmal erhöht wird, dann erhöhst du i ja am Ende jedes Durchgangs um 2 ...
Heisst im ersten Durchgang ist i 1, dann 3, dann 5 ... du überspringst 2 und 4 ..
-> Streich das i++ unten weg.
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Dann ist deine for-schleife aber falsch, dann muss sie ja bei i=1 beginnen.
Weil du ja zuerst mit 1 multiplizierst, dann mit 2, etc.
i ist also das, mit dem du mzahl multiplizierst
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Du kannst es auch so lösen, dass du selbst die Länge der Reihe bestimmst. Deinen Startwert behälst du wie zuvor auf 2. Schreibe:
int startWert = 2;
for(int i=1;i<reihenLaenge+1;i++){
System.out.print(startWert*i +" "+)
}
Wie du unschwer erkennst, wird der startwert bei jedem loop immer mit dem i multipliziert.
So hast du dann 1*2 | 2*2 | 3*2 | 4*2 ...
![](https://images.gutefrage.net/media/user/Akaruitsuki/1587812758073_nmmslarge__0_0_971_971_62386a8f8423566ac7d6767285e0f5e4.png?v=1587812758000)
Lass das i++; (deine letzte Zeile) weg. i wird schon durch die Schleife erhöht. So erhöhst du i doppelt
![](https://images.gutefrage.net/media/user/Akaruitsuki/1587812758073_nmmslarge__0_0_971_971_62386a8f8423566ac7d6767285e0f5e4.png?v=1587812758000)
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
ich muss ja die zahlen multiplizieren das es 2 4 6 8 10 ausgegeben wird, wenn ich jetzt i++ weg lasse? wie soll ich die zahlen dann mal machen?
![](https://images.gutefrage.net/media/user/Akaruitsuki/1587812758073_nmmslarge__0_0_971_971_62386a8f8423566ac7d6767285e0f5e4.png?v=1587812758000)
int startwert = 2;
int reihenlaenge = 5;
for(int i = 1; i <= reihenlaenge; i++){
System.out.print(startwert * i + " ");
@MrAmazing2 okay, wie soll ich die zahlen multiplizieren? wenn ich 2 eingebe und beim ausführen 2 4 6 8 10 rauskommen möchte?