Добавление цифр к номеру - PullRequest
0 голосов
/ 28 мая 2018

Для моей программы я бы хотел закодировать массив 1-100.В этом массиве я хочу сохранить номер + их цифры.Например, если число равно 6, сохраненное значение будет равно 6 из-за 6 + 6 = 12. Если число равно 17, сохраненное значение должно быть 25, потому что 17 + 1 + 7 = 25. Я хочу сделать это для каждого числа,В моем коде есть метод и 2 для циклов, но в настоящее время все выводится как 0;Вот мой код.

public class GeneratedNums {

public static void main(String[] args) {

    int [] numbers = new int [101]; 

    for ( int x=0; x < 101; x++){
        numbers[x] = sumDigits (x);


    }

    for ( int x=0; x < numbers.length; x++){
        System.out.println(x + ": " + numbers[x]);
    }


}

public static int sumDigits ( int num) {

   int sum = num;

   while ( num != 0){
       num += num%10;
       num /= 10;
   }
      return num;
}
}

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Вам не нужно много таких циклов, вы можете улучшить их, кэшировав предыдущие выходные данные и повторно использовав их (Dynamic programming tabulation).Учитывая, что у вас нет значений больше 100, следующий код может работать для вас

public static int sumDigits(int num) {
    int[] cache = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1 };
    int sum = num + cache[num % 10] + cache[num / 10];
    return sum;
}

в принципе, я кэшировал выходные данные для первых 10 входов.

К вашему сведению, вы можете масштабировать программу для больших входов, сохраняя предыдущие выходы в HashMap

0 голосов
/ 28 мая 2018

Вы должны добавить результат операции по модулю к sum.И вы должны вернуть sum.

while ( num != 0){
    sum += num % 10;
    num /= 10;
 }
return sum;
...