我想用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 :(得分: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];
答案 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));
}