【问题标题】:Adding numbers digits to number将数字数字添加到数字
【发布时间】:2018-05-28 16:21:00
【问题描述】:

对于我的程序,我想编写一个数组 1-100。在那个数组中,我想存储数字 + 他们的数字。例如,如果数字是 6,则存储的值将是 6,因为 6 + 6 = 12。如果数字是 17,则存储的值应该是 25,因为 17 + 1 + 7 = 25。我想对每个数字都这样做.我的代码有一个方法和 2 个 for 循环,但当前将所有内容输出为 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;
}
}

【问题讨论】:

标签: java arrays methods int


【解决方案1】:

您应该将模运算的结果添加到sum。你应该返回sum

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

【讨论】:

  • 非常感谢@user7
【解决方案2】:

您不需要这么多循环,您可以通过缓存以前的输出并重用它来改进它(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 中来扩展程序以获得更大的输入

【讨论】:

    猜你喜欢
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 2012-12-01
    • 2013-05-07
    • 1970-01-01
    • 2018-11-01
    相关资源
    最近更新 更多