Java for schleife, wie erstelle ich damit quersummen?

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.

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


JupStrunk  22.05.2016, 01:14

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

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

0
Schachpapa  22.05.2016, 06:35
@JupStrunk

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.

0

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

Woher ich das weiß:Berufserfahrung – Software-Entwicklung

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

JupStrunk  21.05.2016, 01:13

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]
0