Fragen zu Ablaufstrukturen

Fragen zu Ablaufstrukturen javafrage Fri, 10/19/2018 - 17:49

1. Codetransformation (if-else)

1. Codetransformation (if-else)

Gegeben ist das folgende Javaprogramm:

public class Main2 {
   static short k;
   public static void main(String[] args) {
      short i, k;
      short imax = 10;
      for (i = 1; i < imax; i++) {
         for (k = 1; k < imax; k++) {
            if ((k == i) || (k == (imax - i))) {
System.out.print("*");
}
else { System.out.print(" "); // ein Leerzeichen
}
} // for k
switch (i) {
case 1:
case 2:
case 3:
case 4:
System.out.println("LINKS");
break;
case 6:
case 7:
case 8:
case 9:
System.out.println("RECHTS");
break;
default:
System.out.println("MITTE");
} // switch
} // for i
} // main
}

Was druckt dieses Programm aus?

Ersetzen Sie die switch Anweisung durch if bzw. if-else Anweisungen. Das Programm soll mit den if Anweisungen die gleichen Ausgaben wie mit der switch Anweisung erzeugen.

Niveau 1
Schwierigkeitsgrad mittel
Zeit

8 Minuten (Konsolenausgaben)

8 Minuten (Codetransformation)

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

javafrage Sat, 12/31/2011 - 13:59

2. Codetransformation von Schleifen

2. Codetransformation von Schleifen

Wandeln Sie die do-while-Schleife in der Methode doWhile() um.
a.) Reimplementieren Sie den vorgebenen Multiplikationsalgorithmus der Methode doWhile() mit Hilfe einer while-Schleife in der Methode nurWhile()
b.) Reimplementieren den vorgebenen Multiplikationsalgorithmus der Methode doWhile() mit einer for-Schleife in der Methode nurFor().

Hinweise:

  • Die Lösungen sollen nur in Bereiche mit weißem Hintergrund eingetragen werden
  • Der Multiplikationsalgorithmus muss nur für positive Werte korrekte Ergebnisse liefern
public class Schleifen { 
public static void main(String[] args) {
int a = 3;
int b = 4;
int c;
if ((a>=1) && (b>=1)) {
c = doWhile(a,b); System.out.println(c);
c = nurWhile(a,b);System.out.println(c);
c = nurFor(a,b); System.out.println(c);
}
} // Ende main public static int doWhile(int a, int b) {
int i = 0;
int ergebnis = 0;
do {
ergebnis += a;
i++;
} while (i < b);

return ergebnis;
}
public static int nurWhile(int a, int b) {
int i = 0;
int ergebnis = 0; // Hier Lösung eintragen return ergebnis; } // Ende nurWhile

public static int nurFor(int a, int b) {
int ergebnis = 0;
int ergebnis = 0;
// Hier Lösung eintragen
return ergebnis;
} // Ende Methode nurFor
}

Niveau 1
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu 1: Codetransformation

Konsolenausgabe:

*       *LINKS
* * LINKS
* * LINKS
* * LINKS
* MITTE
* * RECHTS
* * RECHTS
* * RECHTS
* *RECHTS

Codetransformation:

if (i <5)
System.out.println("Links");
else if (i==5)
System.out.println("Mitte");
else
System.out.println("Rechts");
javafrage Sun, 10/07/2012 - 19:24

Anonymous (not verified)

Thu, 11/25/2021 - 23:58

Sie haben bei der nurFor Schleife im Vergleich zur Lösung einen Fehler. In der Lösung ist bereits schon vor den //hier Lösung eintragen;
ein ergebnis +=a; allerdings ist dies in der Aufgabe nicht so angegeben. Sie müssten, damit alles passt einfach das ergebnis +=a; in der Lösung um eine Zeile verschieben, sodass es nicht mehr im Code überhalb der //hier Lösung eintragen steht.

3. Codetransformation switch-case

3. Codetransformation switch-case

Wandeln Sie die Switch-case Verzweigung der Methode caseVerzweigung() um in if-Verzweigungen. Benutzen Sie hierzu den Rumpf der Methode ifVerzweigung(). Beide Methoden sollen die gleichen Ausgaben mit der Methode drucke() erzeugen.

public class Transformation {
   public static void main(String[] args) {
      caseVerzweigung(3);
      ifVerzweigung(3);
   }

   public static void drucke(String st) { System.out.println(st);}
   
   public static void caseVerzweigung(int s) {
      switch (s) {
         case 2:
         case 4:
            drucke("gerade");
            break;
         case 1:
            drucke("eins");
            break;
        case 3:
            drucke("drei");
            break;
       default:
            drucke("unbekannt");
      } // End switch
   } //Ende Methode caseVerzweigung
   
   public static void ifVerzweigung(int s) {
     // Lösung hier eintragen
   } // Ende Methode ifVerzweigung
}// Ende Klasse Transformation
Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 2: Codetransformation

public class Schleifen {
   public static void main(String[] args) { 
      int a = 3; 
      int b = 4; 
      int c; 
      if ((a>=1) && (b>=1)) { 
         c = doWhile(a,b); System.out.println(c);
         c = nurWhile(a,b);System.out.println(c);
         c = nurFor(a,b);  System.out.println(c);
      }                                          
   } // Ende main                                
    public static int doWhile(int a, int b) {    
       int i = 0;                                
       int ergebnis = 0;                         
          do {                                   
             ergebnis += a;                      
             i++;                                
          } while (i < b);                       
       return ergebnis;                          
   }                                             
   public static int nurWhile(int a, int b) {    
       int i = 0;                                
       int ergebnis = 0;                         
       // Lösung        
       ergebnis += a;
       i++;
       while (i < b) {
           ergebnis += a;
           i++;       } // Ende while Schleife
      return ergebnis;                           
    } // Ende nurWhile                           

public static int nurFor(int a, int b) {
int ergebnis = a;
// Lösung
for (int i = 1; i < b; i++) {
ergebnis += a;
}

return ergebnis;
} // Ende Methode nurFor
}

 

javafrage Sun, 10/14/2012 - 10:34

Anonymous (not verified)

Tue, 12/18/2012 - 13:46

Ist es in diesem Fall wichtig, vor der while-Schleife zu schreiben:
ergebnis += a;
i++;

Ich sehe da keinen Unterschied in der Ausgabe, wenn ich die beiden Zeilen weglasse, da i in dem Beispiel dann 0 wäre, die while-Schleife somit 4 mal durchlaufen würde und als Ergebnis auch 12 rauskommen würde.
Oder gibt es einen Sonderfall, in dem die beiden Zeilen vor der Schleife von Bedeutung sind?

Die while Schleife ist eine abweisende Schleife.
Man kann rein mechanisch den Code im dowhile Block vor die While setzen.
Man muss das natürlich nicht tun, wenn man aus den möglichen EIngaben erkennen kann, dass die Anwendung auf jeden Fall in den while Block kommt.

Aber durch diesen zwang ermöglichen wir die Multiplikation von a * b (b=0) ist das nicht unpraktisch? Habe ich da was übersehen?

Anonymous (not verified)

Tue, 12/16/2014 - 18:46

ich bin der Meinung, dass Sie einen Fehler in der Lösung der Aufgabe gemacht haben.
Sie haben bei nurFor zwei mal ergebnis initialisiert und deklariert

"int ergebnis = 0;"
"int ergebnis = 0;"

jedoch muss es doch eigentlich

"int i = 0;"
und
"int ergebnis = 0;"

sein, oder nicht?

Falls ja, so stimmt Ihre for Schleife ebenfalls nicht, sie würde, dadurch dass wir i bereits deklariert und initialisiert haben,

for( i = 0; i statt
for (int i 0 =; i

lauten.

Sind Sie mit meiner Meinung einverstanden oder habe ich einen Denkfehler?

lG

Anonymous (not verified)

Sun, 12/20/2015 - 16:07

Wieso muss ich hier bei der for-Schleife nicht einmal davor ergebnis+=a; implementieren um zu garantieren, dass die Schleife einmal durchläuft, wie bei der do-while Schleife?

Anonymous (not verified)

Fri, 12/22/2017 - 10:21

In der for-Schleife muss man i = 1 setzen, sonst zählt es einmal mehr durch.

Übrigens sind ihre Captchas echt schwer zu lesen.

4. Codetransformation (while Schleife)

4. Codetransformation (while Schleife)

Die Methode forSchleife(int a) implementiert eine arithmetische Reihe, die für die Eingaben 0 bis 4 die folgenden Ausgaben erzeugt:
Eingabe: 0 1 2 3 4
Ausgabe:

  • 0
  • 1=1
  • 3=1+2
  • 6=1+2+3
  • 10=1+2+3+4
public class ArithmetischeReihe {

 public static void main(String[] args) {// nur zum Testen
 int c;
 for (int a = 0; a <= 5; a++) {
   c = forSchleife(a);
   System.out.println(a + ":" + c);
   c = whileSchleife(a);
   System.out.println(a + ":" + c);
   } // Ende for
 } // Ende Methode main

 public static int forSchleife(int a) {//Vorgabe
   int ergebnis = 0;
   for (int i = 1; i <= a; i++) {
       ergebnis += i;
    }
   return ergebnis;
  }
}

Transformieren Sie die Methode forSchleife(int a) in eine gleichwertige Methode whileSchleife(int a) die, die gleichen Ergebnisse mit einer while Schleife erzeugt. Nutzen Sie den folgenden Quellcode:

public static int whileSchleife(int a) {
   int ergebnis = 0;

   return ergebnis;
}

Niveau 1
Schwierigkeitsgrad mittel
Zeit 5 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 3: Codetransformation switch-case

public class Transformation {
     public static void main(String[] args) { 
        caseVerzweigung(3); 
        ifVerzweigung(3); 
   }

   public static void drucke(String st) { System.out.println(st);}
   
   public static void caseVerzweigung(int s) {
      switch (s) {
         case 2:
         case 4:
            drucke("gerade");
            break;
         case 1:
            drucke("eins");
            break;
        case 3:
            drucke("drei");
            break;
       default:
            drucke("unbekannt");
      } // End switch
   } //Ende Methode caseVerzweigung
   
   public static void ifVerzweigung(int s) {
     // Lösung hier eintragen  
     for (s = 0; s < 6; s++) { //for Schleife nur zum Testen
        if ((s == 2) || (s==4)) drucke("gerade");
           else if (s==1) drucke("eins");
           else if (s==3) drucke ("drei");
           else drucke("unbekannt");
       	}
   } // Ende Methode ifVerzweigung
}// Ende Klasse Transformation
javafrage Fri, 08/16/2013 - 18:56

5. Codetransformation (do-while Schleife)

5. Codetransformation (do-while Schleife)

Die Methode forSchleife(int a) implementiert eine arithmetische Reihe, die für die Eingaben 1 bis 5 die folgenden Ausgaben erzeugt:

Eingabe: 1 2 3 4
Ausgabe:

  • 1=1
  • 3=1+2
  • 6=1+2+3
  • 10=1+2+3+4
  • 15= 1+2+3+4+5
public class ArithmetischeReihe {

public static void main(String[] args) {// nur zum Testen
int c;
for (int a = 1; a <= 5; a++) {
   c = forSchleife(a);
   System.out.println(a + ":" + c);
   c = doWhileSchleife(a);
   System.out.println(a + ":" + c);
   } // Ende for
} // Ende Methode main

public static int forSchleife(int a) {//Vorgabe
   int ergebnis = 0;
   for (int i = 1; i <= a; i++) {
      ergebnis += i;
   }
   return ergebnis;
}

Transformieren Sie die Methode forSchleife(int a) in eine gleichwertige Methode doWhileSchleife(int a) die, die gleichen Ergebnisse mit einer dowhile Schleife erzeugt. Nutzen Sie den folgenden Quellcode:

public static int doWhileSchleife(int a) {
   int ergebnis = 0;
   // Code hier einfügen
   return ergebnis;
}
} // Ende der Klasse

Niveau 1
Schwierigkeitsgrad mittel
Zeit 5 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 4: Codetransformation (while Schleife)

public static int whileSchleife(int a) {
   int ergebnis = 0;

   int i = 1;
   while (i <= a) {
      ergebnis += i;
      i++;
   }
   return ergebnis;
}
javafrage Wed, 08/21/2013 - 09:19

6. Codetransformation (switch-case Bedingung)

6. Codetransformation (switch-case Bedingung)

Die Methode forSchleife(int a) implementiert eine arithmetische Reihe, die für die Eingaben 0 bis 4 die folgenden Ausgaben erzeugt:

Eingabe Ausgabe
0 0
1 1=1
2 3=1+2
3 6=1+2+3
4 10=1+2+3+4

 

public class ArithmetischeReihe {

public static void main(String[] args) {// nur zum Testen
int c;
for (int a = 0; a <= 5; a++) {
   c = forSchleife(a);
   System.out.println(a + ":" + c);
   c = caseVerzweigung(a);
   System.out.println(a + ":" + c);
   } // Ende for
} // Ende Methode main

public static int forSchleife(int a) {//Vorgabe
   int ergebnis = 0;
for (int i = 1; i <= a; i++) {
ergebnis += i;
}
return ergebnis; }

Transformieren Sie die Methode forSchleife(int a) in eine gleichwertige Methode caseVerzeigung(int a) die, die gleichen Ergebnisse mit einer case Verzweigung erzeugt. In der case Verzweigung kann jeweils das Endergebnis aus der Tabelle oben zurückgegeben werden. Nutzen Sie den folgenden Quellcode:

public static int caseVerzweigung(int a) {
int ergebnis = 0;
// Hier Lösung implementieren
return ergebnis;
} // Ende switch } } // Ende der Klasse

Niveau 1
Schwierigkeitsgrad mittel
Zeit 5 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 5: Codetransformation (do-while Schleife)

public static int doWhileSchleife(int a) {
int ergebnis = 0; int i = 1; do { ergebnis += i; i++; } while (i <= a); return ergebnis; }
javafrage Wed, 08/21/2013 - 09:40

Anonymous (not verified)

Sun, 12/20/2015 - 21:14

Was bedeutet ergebnis += i; ich konnte den Operator nicht finden.

Anonymous (not verified)

Wed, 12/14/2016 - 14:42

Guten Tag,

müsste in der Lösung von der Codetransformation das int i = 1 sein und nicht int i = 0 ?
Da die Initialisierung in der Aufgabe in der For Schleide int i = 1 ist?

Mit freundlichen Grüßen!

Das ganze mit 1 loslaufen lassen ist der korrekte Ansatz.
Das Ergebnis eines Starts mit i=0 war korrekt, da eine 0 auf das Ergebnis aufaddiert wurde.
Ich habe die Antwort geändert.

Anonymous (not verified)

Sat, 12/14/2019 - 21:59

Wäre der Sinn der do-while-Schleife nicht mit folgendem Methodenrumpf besser getroffen?:

int ergebnis = 0;
do {
ergebnis += a--;
}while(a>0)
return ergebnis;

Die Variable i wirkt etwas konstruiert um mehr an die vorherige for-Schleife anzulehnen.

Oder ist genau das so gedacht?

7. Implementieren einer for-Schleife

7. Implementieren einer for-Schleife

Implementieren Sie eine for-Schleife die eine Variable i vom Wert 10 bis 20 hoch zählt.

Benutzen Sie den Aufruf System.out.println(i); um den Zählvorgang auf der Konsole auszudrucken.

Achten Sie darauf, dass alle benutzen Variablen deklariert sind!

Niveau 1
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 6: Codetransformation (switch-case Bedingung)

public static int caseVerzweigung(int a) {
int ergebnis = 0;
switch (a) {
case 0:
ergebnis = 0;
break;
case 1:
ergebnis = 1;
break;
case 2:
ergebnis = 3;
break;
case 3:
ergebnis = 6;
break;
case 4:
ergebnis = 10;
break;
default:
ergebnis = -1;
break; }
return ergebnis; } // Ende switch
javafrage Sat, 08/15/2015 - 15:53

8. Syntax einer for-Schleife

8. Syntax einer for-Schleife

Nennen Sie die drei Teile des Kopfs einer for-Schleife in der Reihenfolge des Auftretens. Geben Sie eine kurze Erklärung für jeden Bereich

Niveau 1
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 7: Implementieren einer for-Schleife

 

for (int i=10;i<=20; i++) {
   System.out.println(i);
   }

 

javafrage Sat, 08/15/2015 - 17:37

Anonymous (not verified)

Wed, 11/23/2016 - 12:21

Verbesserung: Nennen SIE die drei... :-)

9. Unterschiede zwischen do-while-Schleifen und for-, while-Schleifen

9. Unterschiede zwischen do-while-Schleifen und for-, while-Schleifen

Was unterscheidet eine do-while Schleifen von while- und for-Schleifen?

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 8: Syntax einer for-Schleife

  1. Identifikation und Initialisierung der (Lauf)variable mit der Möglichkeit zur Deklaration der Laufvariable
  2. Definition eines Kriterium (logisches Ausdruck) welches bestimmt ob der Schleifenblock ausgeführt
  3. Ausdruck der in der Regel zur Modifikation der Laufvariable benutzt wird nachdem der Block der for-Schleife einmal durchlaufen wird.

Kommentar: Java erlaubt es in allen drei Teilen des Kopfes Ausdrücke zu programmieren die nichts miteinander zu tun haben! Dies ist exotisch, in der Regel kontraproduktiv aber syntaktisch und semantisch möglich.

javafrage Sat, 08/15/2015 - 17:47

10. Codetransformation (while)

10. Codetransformation (while)

Transformieren sie die do-while Schleife der Methode in gleichwertige while-Schleifen und for-Schleifen.
Die main(), nurWhile() und forSchleife() Methoden erlauben Ihnen das Testen der Lösung


public class CodeTrans1 {
    /**
     * main Methode ist die Testinfrastruktur. Sie ist nicht direkt relevant zum
     * lösen der Aufgabe
     *
     * @param args Optionen werden nicht benutzt
     */

public static void main(String[] args) {
int b = 3;
System.out.println("Erster Durchlauf");
System.out.println("Vorgabe:");
doWhile(b);
System.out.println("nurWhile():");
nurWhile(b);
System.out.println("forSchleife():");
forSchleife(b);

System.out.println("Zweiter Durchlauf");
b = 0;
System.out.println("Vorgabe:");
doWhile(b);
System.out.println("nurWhile():");
nurWhile(b);
System.out.println("forSchleife():");
forSchleife(b);
}
/**
* Die Vorgabe der Aufgabe
* @param b
*/
public static void doWhile(int b) {
int i = 0;
String s;
if (b >= 0) { // b ist immer gößer Null!
do {
int k = i * 5;
s = (i % 2 == 0) ? "gerade" : "ungerade";
System.out.println("start():" + k + " ist " + s);
i++; // Schleifeninkrement
} while (i < b);

}
}
public static void nurWhile(int b) {
int i = 0;
String s;

if (b >= 0) { // b ist immer gößer Null!
// Hier die while Schleife implementieren
}
}
public static void forSchleife(int b) {
int i = 0;
String s;

if (b >= 0) { // b ist immer gößer Null!
// Hier die for Schleife implementieren
}
}
}

Niveau 1
Schwierigkeitsgrad mittel
Zeit

12 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 9: Unterschiede zwischen dowhile-Schleifen und for-, while-Schleifen

Eine do-while Schleife wird immer mindestens einmal durchlaufen. Sie ist keine abweisende Schleife.

javafrage Tue, 01/03/2012 - 11:30

Anonymous (not verified)

Mon, 12/21/2015 - 22:21

Fehlen bei der for-Schleife nicht die geschweiften Klammern {}?

Stefan Schneider

Fri, 02/26/2016 - 20:50

In reply to by Anonymous (not verified)

Eine for Schleife führt immer einen Block aus. Der Block kann aus mehreren Befehlen in geschweiften Klammern bestehen...

... oder aus einem einzigen Befehl. Die zweite Option wurde hier verwendet.

In solchen Fällen ist immer die Java Spezifikation zur for-Schleife als finale Authorität hinzu zuziehen. :-)

Anonymous (not verified)

Wed, 12/14/2016 - 22:27

Das Feld wird nicht ganz durch iteriert, oder ?
Das Feld ist k+1 lang, es wird aber nur bis k durchlaufen und Werte zugewiesen.

Das Feld ist k+1 Elemente groß. Das erste Element steht auf Position 0 das letzte auf Position k. k ist dann auch der letzte Durchlauf der Schleife.
Die Überlegung war gut. Die Frage ist aber was geschieht mit dem Element auf Position 0?

11. Programmablauf

11. Programmablauf

Gegeben sei das folgende Programm:

package s1.block3;

public class AufgabeSwitchCase {
    static short k;

    public static void main(String[] args) {
        short i, k;
        short imax = 10;
        for (i = 1; i < imax; i++) {
            for (k = 1; k < imax; k++) {
                if ((k == i) || (k == (imax - i))) {
                    System.out.print("*");
                }
                else { System.out.print(" "); // ein Leerzeichen
                }
            } // for k
            switch (i) {
                case 1:
                case 2:
                case 3:
                case 4:
                    System.out.print("LINKS");
                    break;
                case 6:
                case 7:
                case 8:
                case 9:
                    System.out.print("RECHTS");
                    break;
                default:
                    System.out.print("MITTE");
            } // switch
            System.out.println(); //Neue Zeile
        } // for i
    } // main
}
  • Markieren Sie alle Schlüsselwörter
  • Arbeiten Sie jetzt das Programm ab und tragen Sie die Konsolenausgaben von oben nach unten auf ein (kariertes) Blatt Papier ein.

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 8+3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

 

Antwort zu 10: Codetransformation

public class CodeTrans1 {
    public static void main(String[] args) {
        int b = 3;
        System.out.println("Erster Durchlauf");
        System.out.println("Vorgabe:");
        doWhile(b);
        System.out.println("nurWhile():");
        nurWhile(b);
        System.out.println("forSchleife():");
        forSchleife(b);
        // Zweite Testrunde
        System.out.println("Zweiter Durchlauf");
        b = 0;
        System.out.println("Vorgabe:");
        doWhile(b);
        System.out.println("nurWhile():");
        nurWhile(b);
        System.out.println("forSchleife():");
        forSchleife(b);
    }
    /**
     * Die Vorgabe der Aufgabe
     * @param b 
     */
    public static void doWhile(int b) {
        int i = 0;
        String s;
        if (b >= 0) { // b ist immer gößer Null!
            do {
                int k = i * 5;
                s = (i % 2 == 0) ? "gerade" : "ungerade";
                System.out.println("start():" + k + " ist " + s);
                i++; // Schleifeninkrement
            } while (i < b);
        }
    }
    public static void nurWhile(int b) {
        int i = 0;
        String s;
        if (b >= 0) { // b ist immer gößer Null!
            int k = i * 5;
            s = (i % 2 == 0) ? "gerade" : "ungerade";
            System.out.println("start():" + k + " ist " + s);
            i++; // Schleifeninkrement
            while (i < b) {
                k = i * 5;
                s = (i % 2 == 0) ? "gerade" : "ungerade";
                System.out.println("start():" + k + " ist " + s);
                i++; // Schleifeninkrement
            }
        }
    }
    public static void forSchleife(int b) {
        int i = 0;
        String s;
        if (b >= 0) { // b ist immer gößer Null!
            int k = i * 5;
            s = (i % 2 == 0) ? "gerade" : "ungerade";
            System.out.println("start():" + k + " ist " + s);
            for (i = 1; i < b; i++) {
                k = i * 5;
                s = (i % 2 == 0) ? "gerade" : "ungerade";
                System.out.println("start():" + k + " ist " + s);
            }
        }
    }
}

Ergibt die folgende Ausgabe:

Erster Durchlauf
Vorgabe:
start():0 ist gerade
start():5 ist ungerade
start():10 ist gerade
nurWhile():
start():0 ist gerade
start():5 ist ungerade
start():10 ist gerade
forSchleife():
start():0 ist gerade
start():5 ist ungerade
start():10 ist gerade
Zweiter Durchlauf
Vorgabe:
start():0 ist gerade
nurWhile():
start():0 ist gerade
forSchleife():
start():0 ist gerade

javafrage Sun, 09/08/2013 - 11:35

Anonymous (not verified)

Fri, 12/04/2015 - 17:59

Ist es gewollt, dass in der Antwort zu 1.66 bei der letzten Typkonversion weder ein Downcast, noch "//sichere Typkonversion" steht?

12. Erweiterte (Enhanced) For-Schleife

12. Erweiterte (Enhanced) For-Schleife

Warum kann man nicht so einfach die folgende for-Schleife in eine enhanced-for Schleife umwandeln?

public static int forSchleife(int a) {//Vorgabe
       int ergebnis = 0;
       for (int i = 1; i <= a; i++) {
          ergebnis += i;
       }
    return ergebnis;
    }
Niveau 1
Schwierigkeitsgrad mittel
Zeit

3 Minuten

Antwort zu Frage 11: Programmablauf

Schlüsselwörter im Programm:

public class Main2 {
   static short k;    

   public static void main(String[] args) {
     short i, k;
     short imax = 10;
     for (i = 1; i < imax; i++) {
       for (k = 1; k < imax; k++) {
           if ((k == i) || (k == (imax - i))) {
              System.out.print("*");
                } 
            else { System.out.print(" "); // ein Leerzeichen 
                 }
       } // for k
       switch (i) {
          case 1:
          case 2:
          case 3:
          case 4:
              System.out.println("LINKS");
              break;
          case 6:
          case 7:
          case 8:
          case 9:
              System.out.println("RECHTS");
              break;
          default:
              System.out.println("MITTE");
       } // switch
     } // for i
    } // main
}

Konsolenausgaben des Programms

*       *LINKS
 *     * LINKS
  *   *  LINKS
   * *   LINKS
    *    MITTE
   * *   RECHTS
  *   *  RECHTS
 *     * RECHTS
*       *RECHTS

Antwort zu Frage 12:

Die variable i wird im Block der For-Schleife verwendet. In der Enhanced-For-Schleife gibt es aber keine Zählvariable die man verwenden könnte.

javafrage Thu, 11/26/2020 - 10:02