java - 为什么每个循环都不起作用?

标签 java loops for-loop foreach

我的代码不起作用:

Panel[] panelArr = new Panel[5];

for (Panel p:panelArr) {
    p = new Panel();
}
Label lblName = new Label("Name:");
panelArr[0].add(lblName);

出现错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at GUIVehicles$NewSportsCarDialog.<init>(GUIVehicles.java:65)

但是,如果我用这个 for 循环替换 for-each 循环,它就可以工作。

for (int i = 0; i < 5; i++) {
    panelArr[i] = new Panel();
}

据我所知,查看 foreach 循环的文档后,两个 for 循环应该是等效的。显然情况并非如此,我想知道为什么?

最佳答案

您的 for-each 类似于:

for (int i = 0; i < 5; i++) {
    Panel p = panelArr[i];
    p = new Panel();
}

因此,对 p 的赋值显然对数组本身没有影响 - 您只是将 p 重定向到其他地方,这对阵列没有影响。因此,在 for-each 循环结束时,所有数组元素仍然为 null。您的第二个片段是填充数组的适当方法。

关于java - 为什么每个循环都不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21065002/

相关文章:

java - 使用jsoup解析网站数据

java - 让 JOptionPane.showConfirmDialog() 在 Mac OSX 上运行

Java RMI 引用

java - 如何仅在需要时显示框架并设置框架始终显示在顶部?

Java将for循环转换为lambda表达式

java - 试图拿到一手牌来显示西装符号

java - 如何根据以下内容创建 JSONObject

.net - 迭代两个字符串之间的每个值

jQuery:串联导致未定义

linux - 如何在 Shell 的循环中定义两个具有一对一关系的变量