Wie vervollständige ich die Methode "countdown" mit einer while Schleife & "main" mit einer for Schleife?
Hallo, ich habe diese Aufgabe, wo ich nicht so richtig weiterkomme.
Ich habe schon etwas angefangen, weiß aber nicht so richtig, wie ich weiter gehen muss.
Weiter unten steht das geschriebenen Programm
Was wird getestet? Eingabe Resultat
Loops.main(null);
3 Countdown:
5 3
-2 2
1
Start!
Countdown:
5
4
3
2
1
Start!
Countdown:
Loops.countdown(7);
7
6
5
4
3
2
1
Start!
Aufgabenstellung:
Vervollständigen Sie die Methode "countdown" mit einer while-Schleife.
Die Methode soll vom übergebenen Wert "c" runterzählen und dabei Zeilenweise den aktuellen Wert ausgeben.
Wenn die 0 erreicht wird, wird "Start!" ausgegeben.
Vervollständigen Sie die Methode "main" mit einer for-Schleife.
Der Nutzer soll immer wieder nach einem Wert gefragt werden, bis eine Zahl kleiner oder gleich 0 eingegeben wird.
Nach jeder Eingabe wird ein Countdown mit dem eingegebenen Wert gestartet.
public class Loops {
public static void main(String[] args) {
for(int zahl = getCount(); zahl>0; countdown(zahl)); }
public static void countdown(int c) {
while(c>0){
System.out.println(c);
c=1; }
System.out.println("start"); }
public static int getCount() {
return Terminal.askInt("Countdown:\n");
}
}
2 Antworten
Du hast eine Endlosschleife in der Methode countdown geschrieben:
while(c > 0){
System.out.println(c);
c = 1;
}
Die Bedingung dort ist immer true. Denn in jedem Durchlauf setzt du den Wert von c auf eins. Da eins größer als null ist, kann die Schleife nie beendet werden. Richtig wäre es, wenn du den Wert von c um 1 verringerst, anstatt den Wert von c immer auf 1 zu setzen. Hier gibt es mehrere Möglichkeiten:
// Möglichkeit 1:
c = c - 1;
// Möglichkeit 2:
c -= 1;
// Möglichkeit 3:
c--; // oder auch --c; aber das verwendet man besser nicht in diesem Kontext
Durch das Inkrementieren von c ändert sich der Wert und die Bedingung
c > 0
kann irgendwann auch zu false werden. Dies ermöglicht ein Ende der Schleife, sodass auch der Text "Start!" ausgegeben werden kann.
Mir fällt gerade auf, dass die for-Schleife nicht funktionieren kann. Als drittes muss entweder die Zählervariable vergrößert oder verkleinert werden (in den meisten Fällen um 1).
Du rufst hier jedoch eine Methode vom Typ void auf. Eigentlich sollte der Code so nicht Compilieren (habe es aber ehrlich gesagt nie versucht, so was umzusetzen).
Ich denke, das Sinnvollste wäre, in der main-Methode eine while-Schleife zu nutzen, um die Nutzereingaben abzufragen und diese in ein Array vom Typ int zu packen. Anschließend kann man mit einer for-Schleife alle Elemente des Arrays abarbeiten.
Blicke da zwar nicht ganz so durch aber ich verbesser erstmal die Countdown methode
public static void countdown(int c)
{
while (c>0)
{
System.out.println(c);
c--;
}
System.out.println("start");
}
Den Sinn der anderen verstehe ich nicht
Danke dir erstmal!
Nachdem man das dann korrigiert, ist das Programm dann auch fertig oder muss ich noch was hinzufügen?