Schleifen

123michi19

Lt. Junior Grade
Registriert
Okt. 2014
Beiträge
323
Hi Leute,

ich bin gerade dabei, das Thema "Schleifen" (sprich, while, do while und for-Schleife) zu verstehen.

Ich habe mich jetzt gerade einmal mit folgendem einfachen Programm versucht, läuft aber leider nicht wie gewünscht.

Code:
/*Schleife*/
public class Schleife
{
	public static void main (String[]args)
	{
		int i = 10;
		do
		{
		--i;
		}
		while (i>=1);
		System.out.println (--i);
	}
}

Gewünscht ist, dass i solange um eins verringert wird, bis i größer oder gleich 1 ist. Als Ausgabe soll dann die Anzahl der Vorgänge angezeigt werden.

Vielen Dank für Eure Hilfe.
 
123michi19 schrieb:
Gewünscht ist, dass i solange um eins verringert wird, bis i größer oder gleich 1 ist.
Das ergibt keinen Sinn. i ist doch schon größer/gleich 1.
 
Da bei einer do while-Schleife die Abbruchbedingung erst nach dem ersten Schleifendurchlauf ausgewertet wird, ist sie ungeeignet für dein Vorhaben. i könnte ja, wie in deinem Beispiel, von Anfang an >= 1 sein. Such dir einen passenderen Schleifentyp aus.
 
Verstehe nicht genau nach welchen Regeln es bei deinen Code abgeht. Ich kenne es so:

Code:
/*Schleife*/
public class Schleife
{
	public static void main (String[]args)
	{
		int i = 1;

		while (i!=10) {
		System.out.println (i);
		i++;
	        }
}

Hier wird die Schleife durchlaufen bis i = 10 ist. Dabei wird i jedes mal ausgegeben.
 
Also in java habe ich schon ewig nichts mehr gemacht, aber als erstes fällt mir beim Überfliegen auf, dass du statt i das Dekrement von i ausgibst. In Zeile 12 sollte schon mal das "--" weg.
Weiter muss die Ausgabe in die Schleife, damit du mit jeder Dekrementierung auch die passende Ausgabe hast.


Edit: Ach, du willst nur die Anzahl der Durchläufe, die es braucht, um bis auf eins runterzuzählen?
Das würde ich über eine zusätzliche Variable machen, die währenddessen inkrementiert wird.
Z.B.:
x=0;

Dann in die Schleife noch den Zusatz:
++x
Und nach der Schleife:
System.out.println (x);
 
Zuletzt bearbeitet:
123michi19 schrieb:
Das ist laut Prof. egal, da kein Rückgabewert erfolgt.
Kein direkter Rückgabewert, aber eine Ausgabe in Zeile 12.

123michi19 schrieb:
Wie müsste ich denn das Programm richtig schreiben?
Was genau sollte bei dem Beispiel denn rauskommen? 10?

Lahatiel schrieb:
Also in c habe ich schon ewig nichts mehr gemacht [...]
Das ist ja auch nicht C. :)

Agratos schrieb:
Falsch. Geht beides. Ist Prä- und Postinkrement.
Und es ist auch weder Prä- noch Postinkrement. Wenn schon, dann richtig.
 
Ach ärgs, ja. Java. Da ist es noch viel länger her. :(
Dafür stimmt der Rest trotzdem. Ist ja auch fein.

Code:
public class Schleife
{
	public static void main (String[]args)
	{
		int i = 10, x = 0;
 
		do 
                {
		i--;
                ++x;
	        } while (i!=1);
          
         System.out.println (x);
         }
}

So in etwa müsste es gehen. Wie gesagt: das ist ein wenig her.
 
Zuletzt bearbeitet: (hey, am Tablet zu programmieren ist ja schlimmer als erwartet... -.-)
ist kein kunstwerk

Code:
     */
    public static void main(String[] args) {
        
        int i = 10;

            do{
                  System.out.println(i);
                  i--;
                 }
             while(i>=1);
        }

das netz ist voll von hilfen


edit:
du hast "System.out.println (i);" nach der ganzen schleife erst aufgerufen. dann steht i bei 0 und wenn du --i ausgibst steht da eben -1
 
Zuletzt bearbeitet:
Bei deiner Lösung hätte er aber bei jeder Iteration eine Meldung. Das soll anders laufen.

123michi19 schrieb:
Als Ausgabe soll dann die Anzahl der Vorgänge angezeigt werden.

So interpretiere ich zumindest seine Fragestellung. Das macht man z.B. mit einer Zählvariablen (oder man gibt in diesem einfachen Fall einfach (i[start] - 1 = gesamt) an.
 
Zuletzt bearbeitet:
Zurück
Oben