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
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:
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.
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
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 ...
Lass das i++; (deine letzte Zeile) weg. i wird schon durch die Schleife erhöht. So erhöhst du i doppelt
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?
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?