我在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”这是为啥?怎么解决?急!!!!
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”这是为啥?怎么解决?急!!!!
解决方案 »
- java中字符比较大小的问题
- 关于JAVA调用QQ的cameraDLL.dll问题?
- 哪里去下JDK?
- java的网络编程,创建SeverSocket如何使用?用什么类型的输入输出流
- vector,在线等
- 关于java代码本地化的问题,大家帮忙啊!!
- JAVA中的正则表达式是用java.util.regex还是org.apache.regexp,那个好?
- 在网页上怎样发手机短信??
- 在oracle中,如何返回一个表的主键信息?
- 请问一些关于HttpURLConnection的setRequestProperty()方法的问题
- jDialog在jbuild里的什么位置我怎么找不到。还是需要手动写代码
- 在struts中使用command pattern 设计模式,要求controller ---xxAction是common的,公用
MGraph.getWeight(v0,i);
System.out.println(g)
在dist[i]=g.getWeight(v0,i); 中能否确保:参数dist[]对应的实参数据,已确实初始化了?
{distance[i]=0; }
这样总可以了。但getWeight()仍显示空:
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;
}
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
{ System.out.print(g.getWeight(i,j)); System.out.print("\t");
}
System.out.println();
}
{distance[i]=0; }
就是在main方法中初始化的。