Jestem java początkujący i próbuje rozwiązać trudne problemusuma cyfr till suma jest jednocyfrowy numer
wejście = 777
wyjście powinno być 3
7 + 7 + 7 = 21, 2+ 1 = 3;
Z powyższego kodu, jeśli moje dane wejściowe to 333, otrzymuję 9 jako odpowiedź, ale kiedy suma składa się z dwóch cyfr (777 = 21), otrzymuję pustkę!
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);
}
Jest to jeden z tych przypadków, gdzie rekurencyjny rozwiązanie byłoby lepsze. Można to również rozwiązać bez kosztownej konwersji sygnału na ciąg. Wskazówka; używaj modulo i dzielenia całkowitoliczbowego przez 10. – Bathsheba
@batsheba faktycznie, modulo 9 działa jeszcze lepiej (dla dziesiętnych, dla binarnego używałbyś modulo 1) –