[英]What is wrong with this code? (Array of objects, null pointer exception.)
我已经为abc类创建了一个对象数组,但是每当我调用accept()
代码从用户那里获取数据时,它都会给出一个空指针异常。
这是代码:
class abc{
int rollno,i;
String name;
public void accept(){
Scanner sc=new Scanner(System.in);
System.out.print("Enter roll no: ");
rollno=sc.nextInt();
}
public void display(){
System.out.println("Roll no: "+rollno);
}
public static void main(String[] gs){
int i;
abc a[]=new abc[10];
for(i=0;i<10;i++){
a[i].accept(); //This line gives null pointer exception
}
for(i=0;i<10;i++){
a[i].display();
}
}
谁能说出问题所在?
因为a[i]
为null
。 默认情况下未初始化。 您正在创建一个包含10个元素的引用类型abc
的数组。 数组中的所有元素都是null
引用。您需要在调用任何方法之前为每个引用分配一个abc
类型的具体对象。
您需要在调用对象上的任何方法之前实例化它们:
for(i=0;i<10;i++)
{
a[i] = new abc(); // instantiate it
a[i].accept();
}
这是因为您永远不会初始化数组中的元素。
abc a[] = new abc[10];
创建一个新数组,但不会实例化数组中的对象。
你需要做
abc a[] = new abc[10];
for (int i = 0; i < 10; i++) {
a[i] = new abc();
a[i].accept();
}
这是因为abc a[]=new abc[10];
的所有元素abc a[]=new abc[10];
数组将使用空值初始化。 每当您在null引用上调用任何方法时,都会产生null指针异常。您可以通过添加a[i] = new abc();
初始化数组元素来使此null ponter异常无效a[i] = new abc();
您尚未为阵列位置分配内存,即之前
a[i].accept();
你必须包括
a[i] = new abc();
>>如果您发现我的答案正确,请记住将其标记为正确。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.