Java While Schleife, Zahlenreihe mit Additionen?
Hallo zusammen,
ich bin ganz frisch am Java Programmieren lernen und bei einer Aufgabe komme ich irgendwie nicht weiter.
Ich muss dort eine Reihe mittels While Schleife erstellen, welche z.B. folgende Werte ausgeben muss.
"2 4 6 8 10 .... 20"
"7 14 21 28... 70"
Also eigentlich die Zahl mit sich selbst addieren, und dies 10 mal.
Irgendwie komm ich nicht auf die Lösung, kann mir hier jemand helfen? Vielen Dank bereits im Voraus!
3 Antworten
int faktor = 1;
int zahl = 2;
while(faktor < 11)
{
System.out.print(faktor * zahl);
System.out.print(" ");
faktor++;
}
Als Übung könntest du mal probieren, das ganze ohne Multiplikationen durchzuführen ;)
Du kannst es ja mal probehalber weglassen und schauen, was passiert ;)
Warum nimmst du nicht einfach println? Damit spart man sich sowohl eine Zeile als auch ein Methoden Aufruf
Weil println einen Zeilenumbruch macht. Ich persönlich würde die neue Zeile auch bevorzugen, aber ich wollte die Anforderungen des Fragestellers erfüllen (naja fast, ich hab am Ende ein Leerzeichen zu viel):
"2 4 6 8 10 .... 20"
Wenn man sich den Methodenaufruf sparen möchte, könnte man auch etwas in dieser Richtung machen:
System.out.print(faktor * zahl + " ");
Aber ehrlich gesagt steck ich nicht genug in Java drin um zu wissen, ob das einfach so geht oder ob man das (faktor * zahl) vor der Konkatenation explizit typecasten muss.
Normalerweise würde man es so machen
for(int i=1;i<11;i++)System.out.print(i*2);
for(int i=1;i<11;i++)System.out.print(i*7);
Wenn Du es mit Selbstaddition (aber kein z+=z;) und While machen willst, dann etwas (unnötig) komplizierter
int z=0;
While(z<21){ // oder <71
z+=2; // oder +=7
System.out.print(z);}
Vielen Dank bereits für die Antwort. Gemäss Aufgabenstellung muss ich die Aufgabe allerdings mittels while Schleife erledigen, die "for" kenne ich noch gar nicht.... ist dies ebenfalls irgendwie möglich? Oder funktioniert dies genau gleich?
Hey,
ich würde es so lösen:
int counter = 0;
int multiplier = 7; //oder welche Reihe du willst
int n = 1;
while (counter < 10) {
n = n * multiplier; // oder n *= multiplier
System.out.print(n + „ “);
}
Mfg Jannick (L1nd)
Ne, das passt nicht, sei n=1 und Multiplier=7
dann
n=1*7=7 = 7 hoch 1
n=7*7 = 7 hoch 2
etc.
Das ist also die Reihe x hoch i. Nicht x * i
Hmm irgendwie funktioniert es noch immer nicht so ganz, darf ich kurz die Aufgabenstellung nochmals genau wiedergeben?
"In dieser Aufgabe realisierst du ein Programm, das alle Reihen beherrscht! Der Benutzer kann eine beliebige Zahl eingeben, anschliessend gibt das Programm die ersten 10 Elemente der gewünschten Reihe aus. "
Beispiele (wie oben):
"2 4 6 8 10 .... 20"
"7 14 21 28... 70"
Ich habe es jetzt mal so versucht, als Ergebnis bekomme ich 33...
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner keyScan = new Scanner(System.in);
System.out.println("Welche Reihe soll ich ausgeben?");
int reihe = keyScan.nextInt();
int counter = 0;
int n = 0;
while (counter<11) {
counter++;
n = counter * reihe;
}
System.out.println("Die Reihe geht so:"+n);
// Reihe ausgeben
keyScan.close();
}
}
Hey, tut mir leid, habe mich da ein bisschen vertan. Hier ist die korrigierte Version. Der Multiplier stellt die Reihe da, welche ausgegeben werden soll, ist also die Zahl, welche du einlesen musst.
int counter = 0;
int multiplier = 7; //oder welche Reihe du willst
int n = 0;
while (counter < 10) {
n = n + multiplier; // oder n += multiplier
System.out.print(n + " ");
counter++;
}
Mfg Jannick (L1nd)
Es hat endlich funktioniert, vielen Dank für die Hilfe! :)
Darf ich noch ganz kurz fragen was der Zweck des zweiten leeren System.out.print (" "); ist?