Создать статический метод sumDigits, чтобы он считал сумму цифр в числе и возвращал сумму в результате своей работы
Нужно реализовать статический метод sumDigits, чтобы он считал сумму цифр в числе и возвращал сумму в результате своей работы. Для реализации метода желательно использовать методы:
класса Integer:
toString(),parseInt();класса String:
charAt(),length(),valueOf(). У меня получился такой код:
public class Main
{
public static void main(String[] args)
{
System.out.println(sumDigits(5059191));
}
public static int sumDigits(Integer number)
{
String i = Integer.toString(number);
char[] chars = i.toCharArray();
int i1 = Character.getNumericValue(chars[5]);
int i2 = Character.getNumericValue(chars[0]);
int i3 = Character.getNumericValue(chars[5]);
int i4 = Character.getNumericValue(chars[9]);
int i5 = Character.getNumericValue(chars[1]);
int i6 = Character.getNumericValue(chars[9]);
int i7 = Character.getNumericValue(chars[1]);
int sum = i1+i2+i3+i4+i5+i6+i7;
return sum;
}
То есть я в жалких попытках посчитать сумму цифр в числе "5059191".
Однако мне выдаёт ошибку: *"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 9 out of bounds for length 7".*
Можете подсказать где я накосячила?
Ответы (2 шт):
Вот в этой строке
int i6 = Character.getNumericValue(chars[9]);
вы обращаетесь к элементу массива номер 9, а вашем массиве только 7 значений.
И вообще в вашем методе происходит какая-то дичь. Вам нужно написать метод вроде такого:
int sum = 0;
for (int i = 0; i < chars.length; i++){
sum = sum + Character.getNumericValue(chars[i]);
}
return sum;
Ну и в догонку исходя из того, что у вас написано вы видимо не совсем понимаете концепцию массива. Вам стоит подумать и почитать на тему что значит запись
Character.getNumericValue(chars[5]);
Переводить int в char или string - так себе идея. Все проще:
public static int sumDigits(int number) {
int sum = 0;
while (number > 0) {
sum += number % 10;
number/=10;
}
return sum;
}
Если хотите конвертировать в стринг и обратно, то примерно так:
public static int sumDigits(int number) {
int sum = 0;
for (String s : String.valueOf(number).split("")) sum+=Integer.valueOf(s);
return sum;
}