读书人

急解决办法

发布时间: 2012-01-28 22:06:13 作者: rapoo

急!!
我在MGraph类中声明下面的get方法 :
public int getWeight(int v1,int v2)throws Exception
{
if(v1 <0 ¦ ¦v1>=vexnum ¦ ¦v2 <0 ¦ ¦v2>=vexnum)throw new Exception("顶点越界!!");
return edges[v1][v2];
}
在另一个类中调用:
public static void dijkstra(MGraph g,int v0,int path[],int dist[],int s[])throws Exception
{
int mindis,i,j,u,n=g.getVexnum();
for(i=0;i <n;i++)
{ dist[i]=g.getWeight(v0,i);
s[i]=0;
if(i!=v0&&g.getWeight(v0,i) <MaxWeight)
path[i]=v0;
else
path[i]=-1;
}
在主函数调用此方法dijkstra(g,m,Path,distance,s);
运行提示 Exceptin in thread “main”java.lang.NullPointerException
at MGraph.getWeight
at dijkstra
at “main”

这是为啥?怎么解决?急!!!!

[解决办法]
MGraph

public static int getWeight(




MGraph.getWeight(v0,i);
[解决办法]
你在main方法里打印一下g的值看看是不是为null
System.out.println(g)
[解决办法]
答:虽然看起来应是g.getWeight(v0,i); 中出现空引用异常,但我还是想问一下也许是弱智的问题:
在dist[i]=g.getWeight(v0,i); 中能否确保:参数dist[]对应的实参数据,已确实初始化了?
[解决办法]

探讨
之前有int dist[]=null;不知这算不算初始化?

[解决办法]
这样只能逼着我去想,MGraph中edges[][]; 是如何初始化的了?因为我觉得,g.getWeight(v0,i); 中出现空引用异常好像只剩下这个可能了(尽管这个可能性怎么看起来都像是"不可能"的)

读书人网 >J2SE开发

热点推荐