繁体   English   中英

如何用两个数字之间的所有值填充数组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM