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:



Woher ich das weiß:Studium / Ausbildung – Informatikstudium

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?

0
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

0

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

0
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?

0
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 + " ");
1