【问题标题】:Creating an Array loop that displays 0-101 and stores the sums of their digits individually into that index创建一个显示 0-101 的数组循环,并将其数字的总和分别存储到该索引中
【发布时间】:2017-04-28 21:41:10
【问题描述】:

我无法弄清楚这一点。我需要创建一个显示索引号 0-101 的应用程序,并且还存储每个单独的索引号数字的总和。例如:

  1. 索引---------生成的数字
  2. 0--------------------0
  3. 1--------------------2
  4. 2--------------------4
  5. 3--------------------6

等等。索引 17 将存储 25,因为 17 + 1 + 7 = 25。 我已经签订了索引号列表..

public class ArrayPractice {

public static void main(String[] args)
{
    int sum = 0;

    int[] arrayNumber = new int[102];

    for(int i = 0; i < arrayNumber.length; i++){
        arrayNumber[i] = i;
        int add = i % 10; 
        sum += add; 
        i /= 10;

        System.out.println(i);
         }
    }
} 

我也明白,要获得数字的总和,您必须对 10 取模,然后除以 10、17 % 10 = 7、17 / 10 = 1 7 + 1 = 8 + 17(index) = 25。

我只是一直无法让它在一个循环中工作。任何帮助将不胜感激。

【问题讨论】:

  • 请向我们展示失败的代码。你现在给我们的只是一个 for 循环 ...
  • 已修复。我在尝试显示原始索引 # 并显示新数字(其数字总和)时遇到问题。它们每次都必须显示在同一行,显然用一些空格隔开。
  • 您是否针对数字 100、101 验证了“mod 10, div 10”算法?

标签: java arrays loops sum


【解决方案1】:

还将解释,由于您有 3 位数字,因此一次除以 10 是不够的。你必须这样做直到它大于 0,所以对于 100,你得到 0、0、1。这就是为什么一个 while 循环是最好的,因为你不知道它什么时候结束。这适用于任何整数。

请记住,当您知道循环必须结束时使用 for 循环。 当你不知道什么时候结束时使用while循环,你知道什么时候结束,但不知道什么时候结束。

编辑:刚刚看到您必须添加索引本身,17 = 1 + 7 + 17。修复了这个问题。

    int current;
    int[] array = new int[102];
    int sum;

    for(int i = 0; i < array.length; i++){
        current = i;
        sum = 0;
        while(current != 0){
            sum += current % 10;
            current = current/10;
        }
        array[i] = sum+i;
    }

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

【讨论】:

  • 谢谢你。我在这方面慢慢变得更好,需要很多时间才能掌握,这很容易,哈哈。再次感谢
【解决方案2】:

您的代码的问题在于它只是总结了数字的最后一位数字,它不适用于数字大于 2 的数字,您必须遍历所有数字并不断将它们添加到数字中.

for(int i = 0; i < arrayNumber.length; i++) {    
    arrayNumber[i] = i;
    int tmp = arrayNumber[i];

    // summing up digits
    while(tmp > 0) {
        arrayNumber[i] += tmp%10; //extracting right-most digit
        tmp /= 10; // removing the right-most digit
    }
    System.out.println(i , arrayNumber[i]);
}

【讨论】:

  • 啊。我明白我在哪里完全错了。我仍然掌握这些东西的窍门,所以我很感激我能得到的所有帮助!谢谢楼主!
【解决方案3】:

我认为你已经很接近了,但你很可能想要使用另一个变量(i 你的迭代器除外)来修改——否则你的迭代器会不断地被弄乱。您还需要继续进行 mod/divide 操作,直到您的初始数字为 0(即您已经处理了所有数字)。您还需要重置每次通过 for 循环的总和。

这是我的示例代码:

int[] arrayNumber = new int[102];
    for (int i = 0; i < arrayNumber.length; i++) {
        int sum = i;
        int startingNumber = i;
        while (startingNumber > 0) {
            sum += startingNumber%10;
             startingNumber /= 10;
        }
        arrayNumber[i] = sum;
        System.out.println(i + " " + sum);
    }

【讨论】:

    猜你喜欢
    • 2014-05-17
    • 1970-01-01
    • 2018-03-30
    • 2017-07-07
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多