2016-07-31 124 views
1

我想用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

什么问题?先谢谢你!

+0

你只需要第二个循环,你可以使用'i - 2000'作为索引,例如:'nums [i-2000] = i;' – Titus

+0

有一个帖子可以给你解决方案: http:// stackoverflow.com/a/28490904/2625912 – Jason

+0

它容易你的num [y]值总是等于你的第二个循环的最后一个值i = 2999,例如y = 3你的第二个循环块的执行看起来像这样y [3] = 1,y [3] = 2, .... y [3] = 2999 –

回答

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)); 
} 
+0

谢谢!这是一个很好的解决方案! – brobee

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

Java 8解决方案如何?

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

与@silentprogrammer提到1个loop.As另一种方式,则需要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)); 
    } 
增加数组大小