Java: Multiplizieren/Reihe mit Schleife?

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.

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

Saidax3 
Beitragsersteller
 27.05.2020, 01:52

@MrAmazing2 okay, wie soll ich die zahlen multiplizieren? wenn ich 2 eingebe und beim ausführen  2 4 6 8 10 rauskommen möchte?

MrAmazing2  27.05.2020, 01:54
@Saidax3

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 ...

Woher ich das weiß:Studium / Ausbildung

Lass das i++; (deine letzte Zeile) weg. i wird schon durch die Schleife erhöht. So erhöhst du i doppelt


Akaruitsuki  27.05.2020, 01:38

Außerdem wird smul in deinem code nie verwendet

Saidax3 
Beitragsersteller
 27.05.2020, 01:49
@Akaruitsuki

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?

Akaruitsuki  27.05.2020, 01:53
@Saidax3
int startwert = 2;
int reihenlaenge = 5;
for(int i = 1; i <= reihenlaenge; i++){
  System.out.print(startwert * i + " ");