graphs.Graphske.display(test.java:68)中线程“main”java.lang.NullPointerException中的异常

时间:2015-10-09 14:26:34

标签: java

例外:

Exception in thread "main" java.lang.NullPointerException at graphs.Graphske.display(test.java:68)

代码:

import java.util.Scanner;
import java.util.Stack;

class Vertex1{
    public int label;
    public boolean visited;
    public Vertex1(int label)
    {
        this.label=label;
        visited=false;
    }
}

class Graphske
{
    private Vertex1 vertexList[];
    private int adjMatrix[][];
    private final int maxVertices=20;
    private int vertexCount;

    public Graphske()
    {
        adjMatrix=new int[maxVertices][maxVertices];
        vertexCount=0;

        //Intialize the adjacency Matrix with zeroes
        for(int i=0;i<maxVertices;i++)
        {
            for(int j=0;j<maxVertices;j++)
            {
                adjMatrix[i][j]=0;
            }
        }
    }

    public void addEdge(int start,int end)
        {
        adjMatrix[start][end]=1;
        adjMatrix[end][start]=1;
    }

    public void display(int ver)
    {
        int count=0;
        for(int i=0;i<ver;i++)
        {
            vertexList[i]=new Vertex1(0);
        }
        for(int i=0;i<ver;i++)
        {
            count=0;
            for(int j=0;j<ver;j++)
            {
                if(adjMatrix[i][j]==1)
                {
                    count++;
                }
            }
            Object[] vertexList = new Object[6];
            vertexList[i]=new Vertex1(count);
            System.out.println("vertexList["+i+"] = "+count+"  it is ");
        }
    }
}


public class test {

    public static void main(String args[])
    {
      Scanner sc=new Scanner(System.in);
      int ver=sc.nextInt();
      int edg=sc.nextInt();
      Graphske obj=new Graphske();

      for(int i=0;i<ver;i++)
      {
          int v1=sc.nextInt();
          int e1=sc.nextInt();
          obj.addEdge(v1, e1);
      }

      obj.display(ver);
    }
}

1 个答案:

答案 0 :(得分:1)

  

我觉得这行中的异常vertexList [i] = new Vertex1(0);

在这种情况下很明显:vertexList未初始化。 private Vertex1 vertexList[];只是声明 - 您永远不会像adjMatrix[][]中的adjMatrix=new int[maxVertices][maxVertices];一样为其分配值(数组实例)。没有赋值的变量的默认值为null,此null值由 Null PointerException引用。

顺便说一下。 Object[] vertexList = new Object[6];是另一个变量 - 它在本地声明。但无论如何这都无所谓,因为它是在第68行的任务之后使用的

积分应该转到Soorapadman ......