Skip to Content

1.35 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 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 1.34: 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 = 0; i < b; i++) {
ergebnis += a;
}
return ergebnis;
} // Ende Methode nurFor
}

 

Comments

Codetransformation von do-while zu for

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?

Stimmt.

Gut Überlegung. Das ist richtig. Fehler wurde korrigiert.

Lösung Aufgabe

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 < b; i++)...
statt
for (int i 0 =; i < b < i++)..

lauten.

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

lG

Richtig.

Danke, wurde korrigiert.

nurWhile() Methode

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?

Im Prinzip ja

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.



blog | by Dr. Radut