[英]How can I fill an array with all of the values between two numbers?
我想更多地了解数组。 我想创建一个循环,用两个数字之间的所有值填充数组。 但是,似乎只能使它“重置”数组的单个位置的值。 其他所有内容都设为零。 下面是我的代码:
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));
}
}}
输出结果与我期望的不完全相同。 我究竟做错了什么?
我认为您可能打算将int [] MyArray = new int [length + indexLow]; 在循环之前。
您似乎有两个问题。
正如专家在其他答案中指出的那样,每次迭代时您都在重新创建数组。 您需要将数组的声明和实例化移出循环。
但是现在,您还有另一个小问题。 如果您有3到10个互斥的数字,则数组中只有7个数字。 这意味着数组的大小是indexLow
值的两倍。
基本上,这意味着您可以将数组声明语句更改为:
int[] myArray = new int[length - indexLow];
...接着是循环。
另外,如果您使用的是Java 8,则可以利用IntStream
及其range
方法来执行相同的操作:
int[] myArray = IntStream.range(indexLow, length).toArray();
你有
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;
}
因此,您只需创建一次数组,然后在循环中填充每个元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.