else if (obj == delete) { //执行删除操作
Student[] arr = new Student[100];
FileReader fr;
int i = 0;
int =100 + 1;
try {
fr = new FileReader("info.log");
BufferedReader br = new BufferedReader(fr);
try { while(br.ready()) {
arr[i].id = br.readLine();
arr[i].name = br.readLine();
arr[i].sex = br.readLine();
arr[i].age = Integer.parseInt(br.readLine());
arr[i].subject = br.readLine();
//System.out.println("step 1");
if (arr[i].id.equals(deleteID.getText())) {
= i;
}
i++;
}建立arr数组后,进行arr[i].id = br.readLine的操作时无法访问arr,Student也写了构造函数:public Student() {
this.id = "";
this.name = "";
this.sex = "";
this.age = 0;
this.subject = "";
}
Student[] arr = new Student[100];
FileReader fr;
int i = 0;
int =100 + 1;
try {
fr = new FileReader("info.log");
BufferedReader br = new BufferedReader(fr);
try { while(br.ready()) {
arr[i].id = br.readLine();
arr[i].name = br.readLine();
arr[i].sex = br.readLine();
arr[i].age = Integer.parseInt(br.readLine());
arr[i].subject = br.readLine();
//System.out.println("step 1");
if (arr[i].id.equals(deleteID.getText())) {
= i;
}
i++;
}建立arr数组后,进行arr[i].id = br.readLine的操作时无法访问arr,Student也写了构造函数:public Student() {
this.id = "";
this.name = "";
this.sex = "";
this.age = 0;
this.subject = "";
}
at Manager.actionPerformed(Manager.java:451)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
只是声明了,具体没有东西,下标引用为null
Student st=new Student();
arr[0]=st;
指向有效的内存以后就可以用arr[0]这个数组元素了。
取的时候就是null
arr[i]=new Student();
}这样就可以代表LZ的100个不同的对象了
要搞清楚arr里面装的是什么。你搞清楚了就知道点解会有nullpointer的异常了。arr里面装的是Student类型的变量,记住是变量,而不是对象(实例)。
这个数组的效果类似于你定义了100个Student变量:
Student s1;
Student s2;
。
Student s100;
如果这时候你去访问s1~s100会么样?你没给他赋值,也就是没让他指向一个Student的对象。要想正常访问,必须指向一个new出来的Student,或者其他Student对象