当前位置: 首页 > 知识库问答 >
问题:

创建一个数组循环,该循环显示0-101,并将其数字之和分别存储到该索引中

亢建白
2023-03-14

我很难解决这个问题。我需要创建一个显示索引号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(索引)=25。

我只是一直没能让它在循环中工作。任何帮助都将不胜感激。

共有3个答案

须原
2023-03-14

我认为您非常接近,但您很可能希望使用另一个变量(i您的迭代器除外)来修改——否则您的迭代器会不断受到干扰。您还需要继续执行mod/除法操作,直到您的初始数字为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);
    }
宫亦
2023-03-14

您的代码的问题是它只是对数字的最后一位进行求和,它不适用于数字大于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]);
}
宇文良骏
2023-03-14

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

请记住,for循环是在您知道循环何时必须结束时使用的。虽然循环是在您不知道何时结束时使用的,但您知道何时但不知道何时会发生。

编辑:刚刚看到你必须添加索引本身,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]);
    }
 类似资料:
  • 此方法重复读取命令并执行它们,直到游戏结束。完成的变量为true时,表示玩家/用户点击了退出并想要结束游戏——从而退出循环并执行到方法结束。 但我观察到循环有一种奇怪的行为。它循环得非常好(省略以下行时显示stopWatch.getTime()的连续计数: 但是当我把它们放回去时,它会停止显示秒表的连续递增时间,因为它会朝着时间限制增加(在这一点上,它应该停止)。即使玩家没有输入任何命令或输入。

  • 我想知道,在这种情况下,我们可以使用增强的for而不是常规的for循环 在这种情况下,我可以使用增强的for吗?

  • 假设我有一个大小为[10]的数组,当该数组被填满时,我想实现一个FIFO结构,而不是它只是填满了,因此无法向数组中添加新的东西,并抛出旧的东西。 例如,如果我有一个包含汽车制造商的字符串数组,当我的数组中有10个制造商时,我希望删除最旧的条目,添加最新的条目,但要考虑kepping FIFO。我如何在这样的方法中实现它:

  • 问题内容: 我想创建一个2d numpy数组,其中每个元素都是其索引的元组。 范例(4x5): 我将创建具有以下列表理解的python : 是否有更快的方法可以达到相同的效果,也许使用numpy方法? 问题答案: 这是一个基于初始化的方法- 样品运行- 到目前为止针对网格化和更大尺寸发布的所有方法的运行时测试-

  • 我如何比较用户输入的这些数组呢?

  • 问题内容: 我正在尝试显示10位玩家的表格。我通过ajax获取数据,并将其作为道具传递给我的孩子。 现在,我需要一个列表组件来渲染播放器: 这给了我一个。 我不确定发生了什么,我的控制台日志显示了正确的数据,但是以某种方式我无法在返回中访问它。 我想念什么? 问题答案: 在组件中,您需要更改初始状态,因为您正在尝试使用for,但是此属性是导致错误的原因。 此外,如在是你应该从它那里得到的属性