我正在优化一个应用程序,并希望将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)。
答案 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
,但不会影响数组的内容。