Java for schleife, wie erstelle ich damit quersummen?
Ich muss für mein Studium eine for Schleife in java erstellen und mit vom benutzer eingegebenen Zahlen eine quersumme dieser zahlen errechnen. Kann mir einer erklären wie das geht?
aufgabenstellung: Fragt vom Anwender eine Zahlenkolone ab. Danach soll das Programm die Quersumme ausgeben. Beispiel: 146 -> 11
4 Antworten
Die bisherigen Antworten mit dem %10 und /10 (also das Abspalten der letzten Ziffer) gehen natürlich alle.
Eine ganz andere Variante ist das Casten in einen String:
int zahl = ...
String alsString = "" + zahl;
Danach kann einfach in einer Schleife jede Ziffer dazuaddiert werden:
qs = qs + ((int) (alsString.charAt(pos) - '0')); // wobei - '0' wegen dem ASCII code.
Du musst einfach immer die letzte Zahl der eingegebene Zahl abfragen und alle Zahlen addieren.
Dies geht mithilfe von x%10.
Diese Rechenoperation gibt die letzte Ziffer der Zahl zurück.
Das machst du mit alle Ziffern der Zahl.
Ich hoffe, ich konnte dir helfen; wenn du noch Fragen hast, kommentiere einfach.
LG Willibergi
3Versionen
int qs( int n) { return n%10 + qs(n/10); }
int qs2(int n) {
int qsum =0;
for(int i=n; i>0; i/=10) qsum+= i%10;
return qsum;
}
int qs3(int n) {
String s = ""+n; int qsum=0;
for(int i=0; i<s.length();i++) {
qsum += s.charAt(i)-'0';
}
return qsum;
}
Am Smartphone eingegeben ...
Jo, hast recht. War wohl nicht mein Tag gestern, sorry.
So muss es:
int qs(int n) {
return n==0 ? 0 : n%10+qs(n/10);
}
Entspricht eh nicht der Aufgabenstellung, da keine for-Schleife.
ich würde das wohl so schreiben (wenn's unbedingt eine FOR-Schleife sein muss):
int Zahl;
// User-Eingabe in "Zahl" speichern
int Quersumme = 0;
for(; Zahl > 0;){
Quersumme += (Zahl % 10);
Zahl /= 10;
}
// Ausgabe der Quersumme
eleganter währe allerdings eine WHILE-Schleife:
int Zahl;
// User-Eingabe in "Zahl" speichern
int Quersumme = 0;
while(Zahl > 0){
Quersumme += (Zahl % 10);
Zahl /= 10;
}
// Ausgabe der Quersumme
Nachtrag:
so währe es ganz ausführlich mit einer FOR-Schleife... ;)
int Zahl;
// User-Eingabe in "Zahl" speichern
int Quersumme = 0;
for(int tmpZahl = Zahl; tmpZahl > 0; tmpZahl /= 10)
Quersumme += (tmpZahl % 10);
// Ausgabe: Die Quersumme von [Zahl] ist [Quersumme]
die Funktion läuft sich tot bis zum Stack-Overflow !!! :D