2016-07-31 95 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)); 
    } 
增加數組大小