java 对象数组做方法参数报空指针错误

对象数组C[]在类A中定义并初始化。类A中调用类B的构造方法B(C[])并传递C[]为参数,则在类B的构造方法中调用对象C[i]时报空指针错误,求解决办法。类A相关代码简... 对象数组C[ ]在类A中定义并初始化。类A中调用类B的构造方法B(C[ ])并传递C[]为参数,则在类B的构造方法中调用对象C[i ]时报空指针错误,求解决办法。
类A相关代码简化如下:
public class A
extends JPanel{

private C[] c;

public A(String title){

this.setLayout(new GridBagLayout());
this.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));

c= new C[10];
for(int i=0; i<10; i++){
c[i] = new C();
c[i].addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{/*......*/
}
});
}
B b= new B(c);
}
}
请高手们帮看看。。还需要什么。。。
展开
 我来答
hitzsf
2012-06-18 · TA获得超过2060个赞
知道大有可为答主
回答量:1741
采纳率:78%
帮助的人:1167万
展开全部
思路不错,把 B b= new B(c); 放在 for循环外面就可以了。
我根据你的例子,补充完整了,看看吧

package frame;

import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JPanel;

public class A extends JPanel {
private C[] c;
public A() {
this.setLayout(new GridBagLayout());
this.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
c = new C[10];
for (int i = 0; i < 10; i++) {
c[i] = new C(i + "");
c[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {/* ...... */
System.out.println(e.getActionCommand());
}
});
add(c[i]);
}
B b = new B(c);
b.getC();
}
}

class B {
private C[] c;
public B(C[] c){
this.c = c;
}

public void getC(){
for(int i = 0; i < c.length; i++){
System.out.print(c[i].getActionCommand());
}
System.out.println(c.length);
}
}

class C extends JButton{
public C(String i){
super(i);
}
}
Java_Mr
2012-06-18 · TA获得超过216个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:104万
展开全部
c[i] = new C();
是创建了一个对象,但是对象没有值,你可能在B中用空值做操作了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8882490
2012-06-18 · TA获得超过1747个赞
知道小有建树答主
回答量:1190
采纳率:0%
帮助的人:999万
展开全部
你在A 里初始化代码这种形式吗。 C[] c = new C[n];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yinzefeng
2012-06-18 · TA获得超过427个赞
知道小有建树答主
回答量:448
采纳率:0%
帮助的人:264万
展开全部
请把A类的代码贴下出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aoisora_blue
2012-06-18 · TA获得超过412个赞
知道小有建树答主
回答量:583
采纳率:0%
帮助的人:366万
展开全部
那肯定你c[]没初始化好啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhangmingpeilh
2012-06-18 · 超过14用户采纳过TA的回答
知道答主
回答量:205
采纳率:0%
帮助的人:80.8万
展开全部
看描述就知道没初始化,c[] = new 类型[长度]
追问
求问怎么“看描述就知道没初始化”?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式