开发者

How can I initialize an array with an enhanced for-loop?

I was optimizing an application and wanted to change my for loops to enhanced loops:

From:

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

to:

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

I get a NullPointerException, because it probably doesnt know how much 'beren' can be in the array, but I'm not sure how to manage the same as开发者_JAVA技巧 the loop above (MAX_BEREN = 11).


If the array reference ('Wasberen' in this case) in an enhanced for statement is null, then a NullPointerException will result when the statement is executed.


For initializing arrays, you should stick to the syntax you had before.


You can't use the enhanced for-loop in Java to fill an array. (I'm assuming your Wasberen array was already created before - if not, this will get you a NullPointerException in both variants.)

Your code (simplified)

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

is equivalent to

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

This assignment will change the local variable a, but will have no effect on the contents of the array.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜