Ziffernsumme in Java

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/ziffernsumme_in_java_17636/page_1 - zur Vollversion wechseln!


-MadMax- schrieb am 13.11.2001 um 13:57

kann mir wer sagen, wie man die Ziffernsumme in Java bildet?

zb. ich geb 3450 ein, und er rechnet dann

3 + 4 + 5 + 0 = 12

danke! :)


JonnyB schrieb am 13.11.2001 um 14:06

Wie wär's mit Umwandlung in String, Schleife für jedes Zeichen im String bis zu dessen Ende, Umwandlung des einzelnen Zeichens in einen Integer, Addiere aktuelle Zahl zu bisheriger Summe?

Die genaue Syntax von Java ist mir jetzt nicht geläufig, aber ich arbeite daran. :D


noledge schrieb am 13.11.2001 um 14:07

ich nehm an wie in jeder anderen sprache in der es keine eigene funktion dafür gibt.

in die teilzahlen zerlegen mit division und diese dann zusammenzählen

3450 / 1000 = 3
450 rest /100 = 4
50 rest / 10 = 5
0 rest / 1 = 0
3+4+5+0 = 12

noledge


-MadMax- schrieb am 13.11.2001 um 14:11

ok, danke!
ich hatte gehofft, man muss es nicht so umständlich machen!

Aber es gibt also wirklich keinen eigenen Befehl dafür! :(


schrieb am 13.11.2001 um 14:11

Zitat von noledge
ich nehm an wie in jeder anderen sprache in der es keine eigene funktion dafür gibt.

in die teilzahlen zerlegen mit division und diese dann zusammenzählen

3450 / 1000 = 3
450 rest /100 = 4
50 rest / 10 = 5
0 rest / 1 = 0
3+4+5+0 = 12

noledge

für den fall musst aber wissen, wie lang die zahl ist!? mit einer schleife über einen string net, da zählt er bis zum end-char.


noledge schrieb am 13.11.2001 um 14:34

Zitat von rettich
für den fall musst aber wissen, wie lang die zahl ist!? mit einer schleife über einen string net, da zählt er bis zum end-char.

musst ned, kannst ja bei /100000000 anfangen, den divisor dievidierst jedesmal durch 10. dort wo keine zhal ist, kommt eh 0 raus und beeinflusst die summe nicht.

nolede


schrieb am 13.11.2001 um 14:37

Zitat von noledge
musst ned, kannst ja bei /100000000 anfangen, den divisor dievidierst jedesmal durch 10. dort wo keine zhal ist, kommt eh 0 raus und beeinflusst die summe nicht.

nolede

das ist aber pretty dirty :D


noledge schrieb am 13.11.2001 um 14:39

er hat nach EINER lösung gefragt, oder? :D ;)

noledge


schrieb am 13.11.2001 um 14:41

Zitat von noledge
er hat nach EINER lösung gefragt, oder? :D ;)

noledge

yep, sorry - sollte ja auch keine kritik an deiner lösung sein, nur eine anmerkung.

:)


noledge schrieb am 13.11.2001 um 15:09

brauchst dich ned entschuldigen, weiß selber das keine saubere lösung ist... aber es funktioniert :cool: ;)

noledge


crashman schrieb am 13.11.2001 um 15:58

mir war fad du musst halt nur einen string übergeben


package test;
import java.lang.Math;
public class Unbenannt1 {

public Unbenannt1() {
System.out.println(sum("1234567891011"));
}
public int sum(String x){
int temp = 0;
if(x.length()>1){
temp+= sum(x.substring(0,(int)java.lang.Math.floor(x.length()/2)));
temp+= sum(x.substring((int)java.lang.Math.floor(x.length()/2)));
}
else
return Integer.parseInt(x);
return temp;

}
public static void main(String[] args) {
Unbenannt1 unbenannt11 = new Unbenannt1();
}
}


-MadMax- schrieb am 13.11.2001 um 17:23

Zitat von rettich
für den fall musst aber wissen, wie lang die zahl ist!? mit einer schleife über einen string net, da zählt er bis zum end-char.

ich muss nur Zahlen vom Typ 'int' abdecken - also weiß ich ja, wie lang die Zahl ist! ;)

Die Lösung ist zwar 'prety dirty' wie du so schön sagst, aber sie funktioniert, also ok! :rolleyes:


@ crashman: danke


that schrieb am 13.11.2001 um 20:17

Zitat von noledge
musst ned, kannst ja bei /100000000 anfangen, den divisor dievidierst jedesmal durch 10. dort wo keine zhal ist, kommt eh 0 raus und beeinflusst die summe nicht.

Das is ja extra-lame :p

Warum nicht umgekehrt: einfach in einer Schleife immer wieder durch 10 dividieren, die Reste aufaddieren, bis 0 rauskommt?


Nurmi schrieb am 14.11.2001 um 12:59

funkt ned weil wenn mal a ziffa 0 is bricht er schon ab...


ThoBay schrieb am 14.11.2001 um 13:03

machst halt einfach:

if (zahl != 0)
{
Befehle
}




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025