Frage von Markor87, 73

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

Antwort
von Willibergi, 54

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

Antwort
von phigeek, 29

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.

Antwort
von Schachpapa, 39

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 ...

Kommentar von JupStrunk ,

int qs( int n) { return n%10 + qs(n/10); }

die Funktion läuft sich tot bis zum Stack-Overflow !!! :D

Kommentar von Schachpapa ,

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.

Antwort
von JupStrunk, 27

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
Kommentar von JupStrunk ,

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]

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten