public class Test {
public class Vertex{
int layer = 0;
int weight = 0;
}
public class NetWork{
Vertex [][]arcs;
NetWork(){
arcs[0][1].weight = 13;
arcs[0][2].weight = 4;
arcs[1][2].weight = 2;
arcs[1][3].weight = 9;
arcs[2][1].weight = 10;
arcs[2][4].weight = 8;
arcs[3][2].weight = 9;
arcs[3][4].weight = 1;
arcs[3][5].weight = 7;
arcs[4][5].weight = 9;
}
}
public void Show(){
NetWork a = new NetWork();
for(int i = 0;i<6;++i){
for(int j = 0;j<6;++j){
System.out.print(a.arcs[i][j].weight);
}
                        System.out.println("");
}
}
public static void main(String args[]){
Test p = new Test();
p.Show();
}
}运行后出现Exception in thread "main" java.lang.NullPointerException
at Test$NetWork.<init>(Test.java:9)
at Test.Show(Test.java:22)
at Test.main(Test.java:32)
请问是神马情况

解决方案 »

  1.   

    大概就是因为arcs这个二维数组没有分配内存,我改了一下,LZ可以参考。public class Test {
    public class Vertex {
    int layer = 0;
    int weight = 0;
    } public class NetWork {
    Vertex[][] arcs = new Vertex[6][6]; {
    for (int i = 0; i < 6; i++) {
    for (int j = 0; j < 6; j++) {
    arcs[i][j] = new Vertex();
    }
    }
    } NetWork() {
    arcs[0][1].weight = 13;
    arcs[0][2].weight = 4;
    arcs[1][2].weight = 2;
    arcs[1][3].weight = 9;
    arcs[2][1].weight = 10;
    arcs[2][4].weight = 8;
    arcs[3][2].weight = 9;
    arcs[3][4].weight = 1;
    arcs[3][5].weight = 7;
    arcs[4][5].weight = 9;
    }
    } public void Show() {
    NetWork a = new NetWork();
    for (int i = 0; i < 6; ++i) {
    for (int j = 0; j < 6; ++j) {
    System.out.print(a.arcs[i][j].weight);
    }
    System.out.println("");
    }
    } public static void main(String args[]) {
    Test p = new Test();
    p.Show();
    }
    }
      

  2.   

    唉,ls言之有理。调了一会发现用int的初始也会有同样的错误。受教了