2015-12-15 31 views
-1

我正在为我的软件工程课程使用策略设计模式,但我不确定它有什么问题。语法错误我说'重复方法getPath()Route'和'语法错误令牌公共,班后预期'和'返回类型失踪',但我确实有回报。不能弄清楚我的策略设计模式有什么问题

package wpi.cs509.routeFinder; 

import wpi.cs509.dataModel.*; 
import wpi.cs509.dataManager.*; 
import wpi.cs509.routeFinder.*; 

import java.util.List; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.PriorityQueue; 

public interface Route { 
    public ArrayList<Point> getPath(); 
} 

public DikstraRoute implements Route { 
    public DikstraRoute(Point start, Graph g, Point destination) { 
     if(source.getId()==destination.getId()){ 
      ArrayList<Point> point=new ArrayList<Point>(); 
      point.add(source); 
      return point; 
     } 

     source.minDistance = 0; 
     PriorityQueue<Point> pointQueue = new PriorityQueue<Point>(); 
     pointQueue.add(source); 

    while (!pointQueue.isEmpty()) { 
     Point u = pointQueue.poll(); 

      // Visit each edge exiting u 
      for (Edge e : g.getNeighbors(u)) 
      { 
       try 
       { 

       Point v = g.getPointById(e.getePointId()!=u.getId()?e.getePointId():e.getsPointId()); 

       float weight = e.getWeight(); 
       double distanceThroughU = u.minDistance + weight; 
     if (distanceThroughU < v.minDistance) { 
      pointQueue.remove(v); 
      v.minDistance = distanceThroughU ; 
      v.previous = u; 
      pointQueue.add(v); 
    // System.out.println("u.id is"+u.getId()); 
       } 
       }catch(NullPointerException e1) 
       { 
      System.out.println(e.getId()+"**********"+u.getName()); 
       } 
      } 
     } 
    } 

    @Override 
    public ArrayList<Point> getPath() { 
     ArrayList<Point> path = new ArrayList<Point>(); 
     for (Point vertex = destination; vertex != null; vertex = vertex.previous){ 
      path.add(vertex); 
     } 

     Collections.reverse(path); 
     return path; 
    } 
} 

public PrimsRoute implements Route { 
     public PrimsRoute(Point start, Graph g, Point destination) { 
     if(source.getId()==destination.getId()){ 
      ArrayList<Point> point=new ArrayList<Point>(); 
      point.add(source); 
      return point; 
     } 

     source.minDistance = 0; 
     pointQueue.insert(source, source.minDistance); 
     while (!pointQueue.isEmpty()) { 
      int v = pointQueue.remove(); 
      scan(Graph G, v); 
     } 
    } 

    @Override 
    public ArrayList<Point> getPath() { 
     ArrayList<Point> path = new ArrayList<Point>(); 
     for (Point vertex = destination; vertex != null; vertex = vertex.previous){ 
      path.add(vertex); 
     } 

     Collections.reverse(path); 
     return path; 
    } 
} 
+1

你认为这个声明'public PrimsRoute implements Route'应该怎么做?你为什么这么认为?投票结束为错字。 –

回答

-1

你已经错过了关键字class在类的声明。就像您声明Routeinterface一样,您必须声明DikstraRoutePrimsRouteclass es。例如:

public class DikstraRoute implements Route { 
    ... 
} 
相关问题