已经定义了类
class CString{
    int length;
    String str;
    boolean flag;
    void setString(String s){
        this.str = s;
    }
}在主类中:
CString a[] = new CString [3];
a[0].str = "aa";编译过了,但是在运行时出现Exception in thread "main" java.lang.NullPointerException  at parenthesizethestring.Main.main(Main.java:33)就是 a[0].str = "aa"; 这句的问题。
为什么会出现这个错误呢?怎样解决?

解决方案 »

  1.   

    不应该这样赋值
    应该用a[0].setString(aa)
      

  2.   

    CString a[] = new CString [3]{new CString(),new CString(),new CString()}; 
    a[0].str = "aa"; 
      

  3.   

    CString a[] = new CString []{new CString(),new CString(),new CString()}; 
    a[0].str = "aa"; 
      

  4.   

    终于调出来了。
    CString a[] = new CString [3];
    for (int i=0;i<n;i++)
         a[i] = new CString ();
    a[0].setString("aa");
      

  5.   

    因为“CString a[] = new CString [3];” 之后,a指向一个里面全是指向null的一维数组,所以要将里面的各个对象初始化,才可分配内存,才有成员变量str可赋值。