填充特定范围内的数组

时间:2016-07-31 10:34:41

标签: java arrays for-loop

我想用2000-3000之内的整数填充数组。

public static void main(String[] args) {

 int[] nums = new int[1000];
 for (int y = 0; y < nums.length; y++) {

  for (int i = 2000; i < 3000; i++) {
   nums[y] = i;
  }
 }
 System.out.println(Arrays.toString(nums));
}

我得到一个满2999的数组。

问题是什么?提前谢谢!

5 个答案:

答案 0 :(得分:3)

您一次又一次地填充同一个单元格。您的数组大小为1000,但您的范围是1001:3000 - 2000 + 1 = 1001

public static void main(String[] args) {

    int[] nums = new int[1001];
    for(int y=0;y<nums.length;y++) {
        nums[y]= y + 2000;
    }

    System.out.println(Arrays.toString(nums));
}

答案 1 :(得分:3)

Java 8解决方案怎么样?

IntStream.range(2000, 3001).toArray(); // [2000, 2001, ... 3000]

答案 2 :(得分:0)

你不需要嵌套循环就可以做到这一点

 int[] nums = new int[1000];        

 for(int i=2000; i<3000; i++) {
       nums[i-2000]=i;
 }     

 System.out.println(Arrays.toString(nums));

你得到2999因为你的循环结束i<3000,只需将其更改为i<=3000并将数组长度增加到

int[] nums = new int[1001];       

DEMO

答案 3 :(得分:0)

如果您可以将代码翻译成人类语言,这会很有帮助。

分解你的代码,你有两个循环。一个是:

int[] nums = new int[1000];
  for (int y = 0; y < nums.length; y++) {
    // Stuff
  }
}

你在第一个循环中的想法是迭代整个数组的长度。

  

&#34;对于数组中的每个索引......&#34;

然后,在数组迭代器中有另一个循环:

for (int i = 2000; i < 3000; i++) {
  nums[y] = i;
}

在这里,您尝试将数字从2000到2999放入数组的索引y

  

&#34;在数组的索引y 中,将值设置为2000到2999.&#34;

为您输入的每个值都会覆盖以前的值。这最终会最终成为:

  

&#34;将2999放在数组的索引y 中。&#34;

将它们放在一起:

  

&#34;对于数组中的每个索引y ,请输入2999。&#34;

检查TDG's answer以了解编写代码的正确方法。

答案 4 :(得分:0)

使用1循环的另一种方法。如@silentprogrammer所述,您需要将数组大小增加1。

public static void main(String[] args) {
        int var=2000;
        int[] nums = new int[1001];
        for (int y = 0; y < nums.length; y++) {
            nums[y]=var++;
        }
        System.out.println(Arrays.toString(nums));
    }