无法弄清楚为什么我收到此异常,Console会返回此消息:
public static void main(String [] args){
JFrame b = new JFrame("Lotus");
Container pieces = new Container();
JLabel[] labelsP1 = new JLabel[10];
JLabel[] labelsP2 = new JLabel[10];
for(int i = 0 ; i < labelsP1.length ; i++){
labelsP1[i] = new JLabel(B1);
for(int j = 0 ; j < labelsP2.length ; j++){
labelsP2[j] = new JLabel(B2);
}
for (JLabel label : labelsP1) {
pieces.add(label);
}
Container c = b.getContentPane();
c.setLayout(new GridLayout(13,3));
c.add(pieces);
}
答案 0 :(得分:3)
你的第3个内循环正在迭代抛出一个空数组
for (JLabel label : labelsP1) {
pieces.add(label);
}
//
for(int i = 0 ; i < labelsP1.length ; i++)
{
labelsP1[i] = new JLabel(B1);
for(int j = 0 ; j < labelsP2.length ; j++)
{
labelsP2[j] = new JLabel(B2);
}
for (JLabel label : labelsP1) // null only labelsP1[0] is initialized
{
pieces.add(label);
}
Container c = b.getContentPane();
c.setLayout(new GridLayout(13,3));
c.add(pieces);
}
答案 1 :(得分:2)
对于初学者来说,看起来你并没有向我们展示所有困难的代码。 其次,你的第一个for循环包含所有代码后的意图是什么?你好像有一个支架错位问题。我猜你需要一个闭合支撑。
for(int i = 0 ; i < labelsP1.length ; i++){
labelsP1[i] = new JLabel(B1);
for(int j = 0 ; j < labelsP2.length ; j++){
labelsP2[j] = new JLabel(B2);
}
到
for(int i = 0 ; i < labelsP1.length ; i++) {
labelsP1[i] = new JLabel(B1);
}
for(int j = 0 ; j < labelsP2.length ; j++) {
labelsP2[j] = new JLabel(B2);
}
答案 2 :(得分:0)
在下面的代码中:
for(int i = 0 ; i < labelsP1.length ; i++){
labelsP1[i] = new JLabel(B1);
for(int j = 0 ; j < labelsP2.length ; j++){
labelsP2[j] = new JLabel(B2);
}
for (JLabel label : labelsP1) {
pieces.add(label);
}
您将 JLabels 逐个添加到数组 labelsP1 ,并迭代数组。但是你试图访问它中不存在的所有元素。
我建议您删除嵌套的for循环以获得正确的行为并避免NullPointerException。