用于在java中创建对象数组的空指针异常

时间:2014-07-14 08:06:20

标签: java arrays object

我已经检查了几乎所有类型的对象数组的声明。请建议所需的更改。此代码为我提供了一个空指针异常,如下所示:

  

线程“main”java.lang.NullPointerException中的异常       在objarray.main(objarray.java:33)

import java.util.*;
class Prod {
    private int    pno, pcost;
    private String pname;

    void accept() {
        Scanner sc = new Scanner( System.in );
        System.out.println( "Enter pno" );
        pno = sc.nextInt();
        System.out.println( "Enter pname" );
        pname = sc.next();
        System.out.println( "Enter pcost" );
        pcost = sc.nextInt();
    }

    void print() {
        System.out.println( pno + "\t" + pname + "\t" + pcost );
    }
}

class objarray {
    public static void main( String[] args ) {
        int i;
        Prod[] p = new Prod[3];
        for( i = 0; i < 3; i++ )
            p[i].accept();
        for( i = 0; i < 3; i++ )
            p[i].print();
    }
}

3 个答案:

答案 0 :(得分:7)

您需要初始化数组的元素:

Prod[] p = new Prod[3];
for(i = 0;i<3;i++)
    p[i] = new Prod(); // added this line
    // rest of code

语句Prod[] p = new Prod[3];只为引用分配空间Prod个对象 - 它不会创建它们。

答案 1 :(得分:0)

    Prod[] p = new Prod[3];
    for(i = 0;i<3;i++){
        p[i] = new Prod(); // this will assign in each
// rest your logic.

    }
希望有所帮助。

答案 2 :(得分:0)

初始化数组中的元素以避免空指针异常以获得清晰的图片尝试eclipse调试器,您将知道有空值的地方,并且您可以轻松地处理这些问题