如何使用增强的for循环初始化数组?

时间:2011-09-01 18:17:35

标签: java android arrays for-loop foreach

我正在优化一个应用程序,并希望将for循环更改为增强循环:

自:

for (int m = 1;m < MAX_BEREN;m++)
{           
    Wasberen[m] = new Wasbeer();       
    Wasberen[m].YYY = r.nextInt(SchermY - 28);
}

为:

for (Wasbeer a : Wasberen)
{
    if (a!=null)
    {
       a = new Wasbeer();
       a.YYY = r.nextInt(SchermY - 28);
    }
}

我得到一个NullPointerException,因为它可能不知道'beren'可以有多少 数组,但我不知道如何管理上面的循环(MAX_BEREN = 11)。

3 个答案:

答案 0 :(得分:1)

对于初始化数组,您应该坚持使用之前的语法。

答案 1 :(得分:1)

如果增强的for语句中的数组引用(在这种情况下为“Wasberen”)为null,则在执行语句时将产生NullPointerException

答案 2 :(得分:1)

您无法在Java中使用增强型for循环来填充数组。 (我假设您的Wasberen数组之前已经创建过 - 如果没有,这将在两个变体中获得NullPointerException。)

您的代码(简化)

for (Wasbeer a : Wasberen)
{
    a = ...;
}

相当于

for (int i = 0; i < Wasberen.length; i++)
{
    Wasbeer a = Wasberen[i];
    a = ...;
}

此赋值将更改局部变量a,但不会影响数组的内容。