例外:
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);
}
}
答案 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 ......