把dat定义为成员变量,新写一个函数返回public class Loginconnect { private Object[][] dat; public Object[][] get_Dat(){ return dat; } public Loginconnect() { String[] a ={"1","2"}; Object[][] dat = { {"Mary", "Campione", new Integer(5), new Integer(5), new Boolean(false)}, {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)}, {"Kathy", "Walrath", "Chasing toddlers", new Integer(2), new Boolean(false)}, }; } }student.data = connect.Loginconnect() ;改为student.data = connect.get_Dat()
呵呵,不好意思,你把再Loginconnect() 方法当中的 Object[][] dat = {...};
改成dat ={...};
不行,改了之后连运行都不行了 错误是 IIlegal start expression
public Object[][] Loginconnect() { String[] a ={"1","2"}; Object[][] dat = { {"Mary", "Campione", new Integer(5), new Integer(5), new Boolean(false)}, {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)}, {"Kathy", "Walrath", "Chasing toddlers", new Integer(2), new Boolean(false)}, }; return dat; } 没有这样写的,将上面的代码封装到另外一个方法中!
我已经把代码改成 public class Loginconnect { private Object[][] dat; public Object[][] get_Dat(){ return dat; } public Loginconnect() { String[] a ={"1","2"}; Object[][] dat = { {"Mary", "Campione", new Integer(5), new Integer(5), new Boolean(false)}, {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)}, {"Kathy", "Walrath", "Chasing toddlers", new Integer(2), new Boolean(false)}, }; } } 然后再另一个文件中 void login_actionPerformed(ActionEvent e) { Loginconnect connect = new Loginconnect(); StudentFrame student = new StudentFrame(); student.data = connect.get_Dat(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = student.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } student.setLocation((screenSize.width - frameSize.width) /4, (screenSize.height - frameSize.height) / 3); student.setVisible(true); student.pack(); student.setVisible(true); } 运行的时候却出现异常(主窗口运行正常,在我想打开StudentFrame.class的窗口是出现异常) Exception occurred during event dispatching: java.lang.NullPointerException
public class Loginconnect { private Object[][] dat; public Object[][] get_Dat(){ return dat; } public Loginconnect() { String[] a ={"1","2"}; dat = { //注意这里...... {"Mary", "Campione", new Integer(5), new Integer(5), new Boolean(false)}, {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)}, {"Kathy", "Walrath", "Chasing toddlers", new Integer(2), new Boolean(false)}, }; } }
更正: public class Loginconnect { private Object[][] dat; public Object[][] get_Dat(){ return dat; } public Loginconnect() { String[] a ={"1","2"}; dat = new Object[][]{ {"Mary", "Campione",new Integer(5), new Integer(5), new Boolean(false)}, {"Alison", "Huml","Rowing", new Integer(3), new Boolean(true)}, {"Kathy", "Walrath","Chasing toddlers", new Integer(2), new Boolean(false)}, }; } }
我们都忽略了一个问题,数组的初始化,像这样子的写法 Object[][] dat = { ...; ...; };只可以出现在array的生成处,就是说只能在首次定义dat的地方用这样的{...}进行初始化,而在Loginconnect() 中,要对已经定义过的dat进行初始化,就只能这样 dat = new Object[][]{ ...; ...; }
还是有错误 dat = { 提示错误在这个大括号处IIlegal start expression
to nodreamer(无梦) 你最后的一次更改,在Loginconnect() 方法类Object[][] dat = { ...; ...; } 变量dat是在方法里定义的,当方法Loginconnect()结束后,他的生命周期也随之结束 方法get_Dat()返回的是类的成员变量dat,而这个dat没有初始化,值是null,所以调用她 就出现 java.lang.NullPointerException
照ajiao(明年今日) 的改了,可还是这个毛病运行的时候出现异常(主窗口运行正常,在我点击按钮想打开StudentFrame.class的窗口时出现异常): Exception occurred during event dispatching: java.lang.NullPointerException
帮你修改了,问题不是connect.get_Dat()无法传递值给student.data,而是你的StudentFrame 的结构问题。 1.Loginconnect connect = new Loginconnect(); 2.StudentFrame student = new StudentFrame(); 3.student.data = connect.get_Dat(); //这句话已经把字符串传递给student.data, 可是问题是你的第二句代码,在StudentFrame构造式里头已经需要data了,虽然第三句把 字符串传递给student.data,可是这时候StudentFrame构造式已经执行过了。更改两处: 1.StudentFrame.java里头 public StudentFrame()改成public StudentFrame(Object[][] data) 2.Login_Frame.java里头 StudentFrame student = new StudentFrame(connect.getob()); student.data = connect.getob(); 改成StudentFrame student = new StudentFrame(connect.getob());
Object[][] dat=....;public Object[][] getO(){
return dat;
}
private Object[][] dat;
public Object[][] get_Dat(){
return dat;
}
public Loginconnect() {
String[] a ={"1","2"};
Object[][] dat = {
{"Mary", "Campione",
new Integer(5), new Integer(5), new Boolean(false)},
{"Alison", "Huml",
"Rowing", new Integer(3), new Boolean(true)},
{"Kathy", "Walrath",
"Chasing toddlers", new Integer(2), new Boolean(false)},
};
}
}student.data = connect.Loginconnect() ;改为student.data = connect.get_Dat()
可是运行的时候还是出这个异常
Exception occurred during event dispatching:java.lang.NullPointerException
这到底是什么原因呀
感觉应该没问题了才对呀
Object[][] dat = {...};
改成dat ={...};
错误是
IIlegal start expression
String[] a ={"1","2"};
Object[][] dat = {
{"Mary", "Campione",
new Integer(5), new Integer(5), new Boolean(false)},
{"Alison", "Huml",
"Rowing", new Integer(3), new Boolean(true)},
{"Kathy", "Walrath",
"Chasing toddlers", new Integer(2), new Boolean(false)},
};
return dat;
}
没有这样写的,将上面的代码封装到另外一个方法中!
public class Loginconnect {
private Object[][] dat;
public Object[][] get_Dat(){
return dat;
}
public Loginconnect() {
String[] a ={"1","2"};
Object[][] dat = {
{"Mary", "Campione",
new Integer(5), new Integer(5), new Boolean(false)},
{"Alison", "Huml",
"Rowing", new Integer(3), new Boolean(true)},
{"Kathy", "Walrath",
"Chasing toddlers", new Integer(2), new Boolean(false)},
};
}
}
然后再另一个文件中
void login_actionPerformed(ActionEvent e) {
Loginconnect connect = new Loginconnect();
StudentFrame student = new StudentFrame();
student.data = connect.get_Dat();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = student.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
student.setLocation((screenSize.width - frameSize.width) /4, (screenSize.height - frameSize.height) / 3);
student.setVisible(true);
student.pack();
student.setVisible(true);
}
运行的时候却出现异常(主窗口运行正常,在我想打开StudentFrame.class的窗口是出现异常)
Exception occurred during event dispatching:
java.lang.NullPointerException
private Object[][] dat;
public Object[][] get_Dat(){
return dat;
}
public Loginconnect() {
String[] a ={"1","2"};
dat = { //注意这里......
{"Mary", "Campione",
new Integer(5), new Integer(5), new Boolean(false)},
{"Alison", "Huml",
"Rowing", new Integer(3), new Boolean(true)},
{"Kathy", "Walrath",
"Chasing toddlers", new Integer(2), new Boolean(false)},
};
}
}
public class Loginconnect {
private Object[][] dat;
public Object[][] get_Dat(){
return dat;
}
public Loginconnect() {
String[] a ={"1","2"};
dat = new Object[][]{
{"Mary", "Campione",new Integer(5), new Integer(5), new Boolean(false)},
{"Alison", "Huml","Rowing", new Integer(3), new Boolean(true)},
{"Kathy", "Walrath","Chasing toddlers", new Integer(2), new Boolean(false)},
};
}
}
Object[][] dat = {
...;
...;
};只可以出现在array的生成处,就是说只能在首次定义dat的地方用这样的{...}进行初始化,而在Loginconnect() 中,要对已经定义过的dat进行初始化,就只能这样
dat = new Object[][]{
...;
...;
}
dat = {
提示错误在这个大括号处IIlegal start expression
你最后的一次更改,在Loginconnect() 方法类Object[][] dat = {
...;
...;
}
变量dat是在方法里定义的,当方法Loginconnect()结束后,他的生命周期也随之结束
方法get_Dat()返回的是类的成员变量dat,而这个dat没有初始化,值是null,所以调用她
就出现 java.lang.NullPointerException
Exception occurred during event dispatching:
java.lang.NullPointerException
的结构问题。
1.Loginconnect connect = new Loginconnect();
2.StudentFrame student = new StudentFrame();
3.student.data = connect.get_Dat(); //这句话已经把字符串传递给student.data,
可是问题是你的第二句代码,在StudentFrame构造式里头已经需要data了,虽然第三句把
字符串传递给student.data,可是这时候StudentFrame构造式已经执行过了。更改两处:
1.StudentFrame.java里头
public StudentFrame()改成public StudentFrame(Object[][] data)
2.Login_Frame.java里头
StudentFrame student = new StudentFrame(connect.getob());
student.data = connect.getob();
改成StudentFrame student = new StudentFrame(connect.getob());
多谢你,没想到是这个原因。
可是即使已经执行完构造函数,就不能再给Object[][]赋值了吗?
student.data = connect.getob();让Object[][]再指向另一个reference,这样不行吗?
一定要在构造函数执行时给Object[][]赋值吗?
那如果想在构造函数执行完之后还想给Object[][]赋另外的值,应该怎么实现呢?
已经初始化的data对象。事后在执行student.data = connect.getob();改变data内容也可以
呵呵
让你白跑了一趟谢谢大家的帮忙
结贴