"We are back" « oc.at

Ziffernsumme in Java

-MadMax- 13.11.2001 - 13:57 9826 23
Posts

-MadMax-

FAULER SACK
Avatar
Registered: May 2001
Location: Linz / Mattighof..
Posts: 690
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

Blutiger Neubei
Registered: Mar 2001
Location: Leoben
Posts: 656
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

CWNE #540
Avatar
Registered: Apr 2001
Location: ::1
Posts: 6838
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-

FAULER SACK
Avatar
Registered: May 2001
Location: Linz / Mattighof..
Posts: 690
ok, danke!
ich hatte gehofft, man muss es nicht so umständlich machen!

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

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
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

CWNE #540
Avatar
Registered: Apr 2001
Location: ::1
Posts: 6838
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

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
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

CWNE #540
Avatar
Registered: Apr 2001
Location: ::1
Posts: 6838
er hat nach EINER lösung gefragt, oder? :D ;)

noledge

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
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

CWNE #540
Avatar
Registered: Apr 2001
Location: ::1
Posts: 6838
brauchst dich ned entschuldigen, weiß selber das keine saubere lösung ist... aber es funktioniert :cool: ;)

noledge

crashman

OC Addicted
Avatar
Registered: Oct 2001
Location: Vienna
Posts: 891
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-

FAULER SACK
Avatar
Registered: May 2001
Location: Linz / Mattighof..
Posts: 690
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

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
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

OC Addicted
Avatar
Registered: Jun 2000
Location: Linz (Hauptplatz..
Posts: 810
funkt ned weil wenn mal a ziffa 0 is bricht er schon ab...

ThoBay

Little Overclocker
Registered: Oct 2001
Location: Deutschland (Bad..
Posts: 114
machst halt einfach:

if (zahl != 0)
{
Befehle
}
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz