class Dijkstra
{ static final int MaxWeight=32767; 
public void dijkstra(MGraph g,int v0,int path[],int dist[],int s[])throws Exception

int mindis,i,j,u,n=g.getVexnum();u=0;
for(i=0;i<n;i++)
{  dist[i]=g.getEdges(v0,i);
s[i]=0;
if(i!=v0&&g.getEdges(v0,i)<MaxWeight)
    path[i]=v0;
else
    path[i]=-1;
}
s[v0]=1;
for(i=1;i<n;i++)
  { mindis=MaxWeight;
    for(j=0;j<n;j++)
   {if(s[j]==0&&dist[j]<mindis)
     { u = j;
mindis = dist[j];
     }
   }
   if(mindis==MaxWeight) return;
s[u]=1;
    for(j=0;j<n;j++)
    {if(s[j]==0)
     if(g.getEdges(u,j)<MaxWeight && dist[u]+g.getEdges(u, j)<dist[j])
     { dist[j]=dist[u]+g.getEdges(u,j);
      path[j]=u;
     }

    }
 }
}
}
主方法中的调用为:
 Dijkstra dij=new Dijkstra();
dij.dijkstra(g,m,Path,distance,s); 
编译时提示:未报告的异常 java.lang.Exception;必须对其进行捕捉或声明以便抛出
                                dij.dijkstra(g,m,Path,distance,s); 
                                            ^

解决方案 »

  1.   

    你把你的 主方法 写成这样   public static void main(String[] args) throws Exception{//TODO you operation}
      

  2.   

    我想你以前可能 没有接触过 java 的异常   java的 app异常 是需要 用 try catch 语句来捕捉的!  这点不同于 c/c++ 语言 !   
      

  3.   

    你没有主动去捕捉异常,而某个异常是被throw给你的,在你代码中必须捕捉这个异常或者抛出这个异常
    解决办法:
    1try catch去捕捉
    2在函数体throws Exception,把异常继续抛出
      

  4.   

    在main()中:
    Dijkstra dij=new Dijkstra();
    try

    dij.dijkstra(g,m,Path,distance,s);
    }
    catch(Exception e)
    {
    ...
    }  
      

  5.   

     public static void main(String[] args) throws Exception
      

  6.   

    用try catch围绕抛出异常的方法 或在方法定义后throws异常都可以 
      

  7.   

    此种错误用eclipse一编译,就会提示你,然后根据提示就能解决了。
      

  8.   

    我在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这是为啥?急!!!!