提问者:小点点

在可变长度数组中迭代


如何迭代可变长度的Java数组。

我想我会设置一个while循环,但是我如何检测到我已经到达数组的末尾。

我想我想要这样的东西[只需要弄清楚如何表示MyArray.NotendOfArray()]

index = 0;
while(myArray.notEndofArray()){
  system.out.println(myArray(index));
  index++;
}

共3个答案

匿名用户

for(int i = 0; i < array.length; i++)
{
    System.out.println(array[i]);
}

for(String value : array)
{
    System.out.println(value);
}

第二个版本是“for-each”循环,它处理数组和集合。 大多数循环都可以用for-each循环完成,因为您可能并不关心实际的索引。 如果你真的关心索引我们的第一个版本。

为了完整起见,您可以这样执行while循环:

int index = 0;

while(index < myArray.length)
{
  final String value;

  value = myArray[index];
  System.out.println(value);
  index++;
}

但是,当您知道大小时,您应该使用for循环而不是while循环(即使使用可变长度数组,您也知道大小。。。只是每次都不同而已)。

匿名用户

数组有一个隐式成员变量,其长度为:

for(int i=0; i<myArray.length; i++) {
    System.out.println(myArray[i]);
}

或者,如果使用>=java5,则使用for each循环:

for(Object o : myArray) {
    System.out.println(o);
}

匿名用户

您在问题中特别提到了一个“可变长度数组”,所以现有的两个答案(在我写这篇文章时)都不太正确。

Java没有任何“可变长度数组”的概念,但它有集合,以这种能力服务。 任何集合(技术上任何“可迭代”,集合的超类型)都可以简单地循环:

Collection<Thing> things = ...;
for (Thing t : things) {
  System.out.println(t);
}

编辑:可能我误解了他所说的“可变长度”的意思。 他的意思可能只是固定长度,但并不是每个实例都是相同的固定长度。 在这种情况下,现有的答案就可以了。 我不知道是什么意思。