我是 Java 初学者。所以我的问题是我试图隐藏窗口的所有照片组件并让其他一些组件出现。但问题是每次我使用 JComboBox
选择项目时,它总是抛出 Exception in thread "AWT-EventQueue-0"java.lang.ArrayIndexOutOfBoundsException: 10
。
这是错误的代码块:
for (cnt1=0; cnt1<10; cnt1++);
{
labels1[cnt1].setVisible(true);
}
for (cnt2=0; cnt2<10; cnt2++);
{
labels2[cnt2].setVisible(false);
}
for (cnt3=0; cnt1<10; cnt3++);
{
labels3[cnt3].setVisible(false);
}
for (cnt4=0; cnt4<10; cnt4++);
{
labels4[cnt4].setVisible(false);
}
for (cnt5=0; cnt5<10; cnt5++);
{
labels5[cnt5].setVisible(false);
}
你能告诉我这里的问题是什么吗?如果您需要,我会发布整个代码。先感谢您。
编辑:我已经修复了数组中的错误,但是这次。编译器给了我这个错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
顺便说一句,这是声明我的数组的片段:
String iconFiles1[] = {"Articuno.png", "Blastoise.png", "Charizard.png", "Kabutops.png", "Mewtwo.png", "Moltres.png", "Omastar.jpg", "Pikachu.jpg", "Venusaur.png", "Zapdos.png"};
String Jlabels1[] = {"Articuno", "Blastoise", "Charizard", "Kabutops", "Mewtwo", "Moltres", "Omastar", "Pikachu", "Venusaur", "Zapdos"};
ImageIcon icons1[] = new ImageIcon[iconFiles1.length];
JLabel labels1[] = new JLabel[Jlabels1.length];
这是它在 GUI 中的分配:
for (int cnt1=0; cnt1<labels1.length; cnt1++)
{
labels1[cnt1].setVisible(true);
}
我做的对吗?答案表示赞赏。再次。谢谢。
最佳答案
您似乎至少在一个 for
循环中有不正确的变量(正如其他几位发帖人已经指出的那样)。
尽管如此,您得到 ArrayIndexOutOfBoundsException
的原因是因为在所有 for
循环之后都有分号,从而使它们执行只是增加你的计数器变量。您在 for 循环中递增的变量不会在 for
循环本身中本地声明,因此它们的范围是您当前所在的任何函数(也就是它们存在于 for 循环之外)。因此,当循环完成递增时,您的计数器将太大(在本例中为 10)---> 因此 ArrayIndexOutOfBoundsException: 10
。
关于java - Java 中的 ArrayIndexOutofBounds/NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17510748/