11. Vergleich der Syntax von Konstruktoren und normalen Methoden
11. Vergleich der Syntax von Konstruktoren und normalen MethodenWie unterscheidet sich die Syntax eines Konstruktorkopf vom Kopf einer normalen Methode?
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 10: Transformation einer rekursiven Methode in eine iterative Methode
/** * Diese Methode berechnet die Quersumme der Eingabe iterativ * * @param eing : Eingabewert * @return a Ergebnis ist die ? */ static private int berechne(int eing) { int a = 0; while (eing != 0) { a = a+ eing%10; eing/= 10; } return a; }
- 4506 views
Fehler?
Ist Ihnen in der while Schleife nicht einiges durcheinander geraten? Warum soll a+eing%10 auf a zugewiesen werden? Das a hat zu diesem Zeitpunkt doch keinen Wert, also bringt es nichts, es zu addieren oder?
der Befehl danach: eing/=10; scheint mir genauso fragwürdig zu sein. Er ändert ja nichts an a und schließlich wird ja a zurück gegeben. Ich bezweifle, dass diese Methode die gleichen Ergebnisse liefert. Müsste es nicht so sein?
while (eing > 0) {
a=eing%10;
a=a+eing/10;
}
return a;
}
Gruß von einem Studenten der sein Leben in Bezug auf Java nicht im Griff hat (hoffentlich hatte).
Antwort
Willkommen im Club derer die Java nicht voll im Griff haben. Ich hatte auch schon Meetings mit Spec. Leads von Java die nicht mehr weiter wussten. Das geht uns allen so.
Der Befehl
macht das gleiche wie der Befehl
damit funktioniert das hoffentlich
Fehler beim Transformieren ?
Bei der rekursiven Methode muss doch der Wert von eing nicht unbedingt über 0 sein, er darf doch lediglich nicht 0 sein.
Bei der iterativen Methode werden von while(eing>0) aber doch alle negativen Werte ausgeschlossen.
Stimmt.
Ihr Vorschlag ist richtig. Ich habe die Musterlösung verbessert.