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; }
- 5038 views
+=
Was bedeutet ergebnis += i; ich konnte den Operator nicht finden.
Addierender Verbundoperator
Das ist ein Verbundoperator. Er addiert und führt eine Zuweisung zur gleichen Variable in einem durch. Er wird hier im Skript beschrieben.
Google verrät das auch wenn man nach Java += Operator sucht...
Ist da ein Fehler in der Lösung?
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!
Sehr gut beobachtet
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.
Verbesserungsvorschlag Lösung
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?