Ich bin ein Anfänger Java und versucht, kniffliges ProblemSumme von Ziffern, bis die Summe ist eine einstellige Zahl
Eingang zu lösen = 777
Ausgang 3
7 + 7 + 7 = 21, sollte 2+ 1 = 3;
Aus dem obigen Code, wenn meine Eingabe 333 ist, bekomme ich 9 als Antwort, aber wenn die Summe zwei Ziffern ist (777 = 21), werde ich leer!
public static void main(String[] args)
{
int y=333;//if y is 777 i am getting blank
int sum=0;
String s;
char []ch;
do
{
s=String.valueOf(y);
ch=s.toCharArray();
if(ch.length>1)
{
for(int i=0;i<ch.length;i++)
{
sum+=Character.getNumericValue(ch[i]);
}
}
else
{
System.out.println(sum);
}
y=sum;
}while(ch.length>1);
}
Dies ist einer jener Fälle, in denen eine rekursive Lösung wäre besser. Auch dies kann ohne die rechenintensive Umwandlung in eine Zeichenfolge gelöst werden. Hinweis; verwenden Modulo und Integer-Division durch 10. – Bathsheba
@batsheba tatsächlich Modulo 9 Werke noch besser (für dezimal, für binäre würden Sie verwenden Modulo 1) –