如何用两个数字之间的所有值填充数组?

时间:2014-07-12 00:11:02

标签: java arrays

我试图更多地理解阵列。我想创建一个循环来填充一个数组,其中包含两个数字之间的所有值。但是,似乎我只能让它“重置”数组的单个位置的值。其他所有东西都归零。以下是我的代码:

public class ArrayTest {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    int indexLow = 3;
    int length = 10;

    for(int i=indexLow; i<indexLow+length; i++){    
          int[] MyArray = new int[length+indexLow];
          MyArray[i] = i;
          System.out.println(MyArray[i]);
          System.out.println(Arrays.toString(MyArray));
          }

} }

输出并不是我所期待的。我做错了什么?

3 个答案:

答案 0 :(得分:1)

我想你可能想把int [] MyArray = new int [length + indexLow];循环之前。

答案 1 :(得分:1)

你似乎遇到了两个问题。

正如其他答案中熟练指出的那样,您每次通过迭代都会重新创建数组。您需要在循环外部移动数组的声明和实例化。

但是现在,你又遇到了一个小问题。如果您的数字从3到10独占,那么您的数组中只有7个数字。这意味着数组的大小是indexLow值的两倍。

这基本上意味着,您将数组声明语句更改为:

int[] myArray = new int[length - indexLow];

...跟随循环。

作为奖励,如果您使用的是Java 8,则可以利用IntStream及其range方法执行相同的操作:

int[] myArray = IntStream.range(indexLow, length).toArray();

答案 2 :(得分:0)

你有

for(int i=indexLow; i<indexLow+length; i++){    
   int[] myArray = new int[length+indexLow];
   myArray[i] = i;
}

在每次循环迭代中创建一个新数组。它必须是

int[] myArray = new int[length+indexLow];
for(int i=indexLow; i<indexLow+length; i++){    
   myArray[i] = i;
}

所以你创建一次数组,并在循环期间填充每个元素。