2015-12-15 5 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

Как вы думаете, что должно означать это заявление «публичный PrimsRoute реализует Route'? Почему ты так думаешь? Голосование закрывается как опечатка. –

ответ

-1

Вы пропустили ключевое слово class в ваших объявлениях классов. Также как вы заявили Route как interface, вы должны объявить DikstraRoute и PrimsRoute как class es. Например:

public class DikstraRoute implements Route { 
    ... 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^