Ziffernsumme

Status
Nicht offen für weitere Antworten.

wmbetter

Mitglied
Hallo !


ich will ein kleines Programm schreiben, welches mir die Ziffernsumme einer Zahl ausgibt.

Code:
public class RechnerApp {
public static void main(String[] args) {
long summe = 0;
long obergrenze = Long.parseLong(args[0]);
long i = 1;
while (i <= obergrenze) {
summe = summe + i;
i = i + 1;
}
f (obergrenze < 0) { 
// error 
}
System.out.println("Die Summe der " +
"Zahlen von 1 bis " + args[0] +
" beträgt " + summe);
}
}

Dieses Prog das ich jetzt habe rechnet die Summer der Ziffern.
Also bei der Eingabe von 5 .. gibt es mir aus, dass die Summe der Ziffern von 1-5 15 ist.

Jetzt will ich das Prog so umschreiben, dass es die Ziffernsumme einer Zahl ausgibt.

Also bei 678

6+7+8= 21
2+1=3

soll das Programm als Lösung also 3 ausgeben und ggf wiederholen, bis das Ergebnis eine einstellige Zahl ist.



Hat da jemand Rat für mich ??


Danke für jeden Hinweis !

Edit sebastian: Code-Tags
 

dieta

Top Contributor
Zu deinem ersten Programm:

Das
Code:
long i = 1;
while (i <= obergrenze) {
geht besser mit einer for-Schleife:
Code:
for(long i=0; i<obergrenze; i++)
{

Zu deiner Frage: Am Besten wandelst du den String per "charAt" und evtl. parseInt in ein int[] array mit der Länge args[0].length() um.
Dann "klapperst" du in einer For-Schleife jedes Element dieses Arrays ab und addierst es zu einer Variable.
 

wmbetter

Mitglied
Hallo vielen Dank für deine rasche Antwort.

Das mit dem for habe ich verstanden, klingt einleuchtend ... !

Aber das mit dem String umwandeln in charAt ... :roll: check ich nicht so ganz !


Grüße
 
G

gast

Gast
mit charAt(int i) holst Du dir das i-te Zeichen aus einem String und betrachtest es
Code:
// erzeugt dir ein Array mit der Länge des Eingabestrings (also deiner zahl)
		int[] intArray = new int[eingabe.length()];
		// jetzt befüllst Du Dein Array 
		for (int i = 0; i < eingabe.length(); i ++)
			// du holst dir das nächste Zeichen und wandelst es in ein int um, da aber laut ASCII-Tabelle die Null den Wert 48, die Eins den Wert 49,... hat musst du noch 48 abziehen
			intArray[i] = eingabe.charAt(i) - 48;
		// und aus diesem Array kannst Du dann wieder leicht die einzelnen Ziffern aufsummieren
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben