繁体   English   中英

此代码有什么问题? (对象数组,空指针异常。)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM