2013-12-04 4 views
0

Так что я устанавливаю класс узла, который показывает ссылки между одним узлом и другим, чтобы найти самый короткий маршрут. Я решил использовать отдельный класс объектов для хранения связей между узлами A и B, чтобы избежать использования двумерных массивов.Использование объекта в другом объекте java

После сохранения проекта в затмении, как контрольной точки, чтобы я не потерял свои данные, внезапные красные линии появлялись при любых вызовах DistanceBetween, говоря, что метод не существует в этом классе объектов, хотя это и происходит, как вы увидите.

Примечание: Любая полужирная часть выдает ошибку в узле. Как правило, он утверждает, что метод не существует в DistanceBetween, или что конструктор (int, int) ошибочен, когда это не так.

Должен ли я использовать удлинитель, пакет?

public class DistanceBetween{ 

    private int thisAddress; 
    private int distanceBetween; 

    public DistanceBetween(int myAddress, int myDistance){ 
     thisAddress = myAddress; 
     myDistance = distanceBetween; 
    } 

    public int getAddress(){ 
     return thisAddress; 
    } 

    public void setAddress(int newAddress){ 
     thisAddress = newAddress; 
    } 

    public int getDistance(){ 
     return distanceBetween; 
    } 

    public void setDistance(int newDistance){ 
     distanceBetween = newDistance; 
    } 

} 










public class Node{ 

    private int address; 
    private int distance; 
    private Node[] connectedNodes; 
    private DistanceBetween[] distances; 
    private boolean intersection; 

    public Node(int myAddress, Node[] myConnected, DistanceBetween[] 
      myDistances, boolean isIntersection){ 
     address = myAddress; 
     connectedNodes = myConnected; 
     distances = myDistances; 
     intersection = isIntersection; 
    } 

    public int getThisAddress(){ 
     return address; 
    } 

    public void setThisAddress(int newAddress){ 
     address = newAddress; 
    } 

    public Node[] getConnected(){ 
     return connectedNodes; 
    } 

    public void connectTwo(Node a, Node b){ 
     for(int x = 0; x < a.getConnected().length; x++){ 
      if(a.getConnected()[x].getThisAddress() == 0){ 

      } 
     } 
    } 

    public DistanceBetween[] getDistances(){ 
     return distances; 
    } 

    public void setDistances(DistanceBetween[] newDistances){ 
     distances = newDistances; 
    } 

    public void addLink(Node a, Node b, int thisDistance){ 
     DistanceBetween[] holderDistanceA = a.getDistances(); 
     DistanceBetween[] holderDistanceB = a.getDistances(); 
     int flags = 0; 
     for(int x = 0; x < holderDistanceA.length; x++){ 
      if(holderDistanceA[x].**getAddress()** == 0){ 
       DistanceBetween aAndB = new **DistanceBetween(b.getThisAddress(),thisDistance);** 
       holderDistanceA[x] = aAndB; 
       flags++; 
       break; 
      } 

     } 

     for(int x = 0; x < holderDistanceB.length; x++){ 
      if(holderDistanceB[x].**getAddress()** == 0){ 
       DistanceBetween bAndA = new **DistanceBetween(a.getThisAddress(),thisDistance);** 
       holderDistanceB[x] = bAndA; 
       break; 
      } 

     } 

     if(flags < 1){ 
      System.out.println("Error, cannot add a link, link load is full."); 
     } 

     a.setDistances(holderDistanceA); 
     b.setDistances(holderDistanceB); 
    } 

    public int getDistanceBetween(Node a, Node b){ 
     int result = 0; 
     for(int x = 0; x < a.getDistances().length; x++){ 
      if(a.getDistances()[x].**getAddress()** == b.getThisAddress()){ 
       result = a.getDistances()[x].**getDistance()**; 
      } 
     } 
     return result; 
    } 

    public boolean equals(Node a, Node b){ 
     if(a.address == b.address){ 
      return true; 
     }else 
      return false; 
    } 

} 
+1

Компиляция отлично подходит для меня, как только я удаляю '*' s, например. '** getAddress() **' - очистить проект eclipse и посмотреть, не исчезла ли ошибка. – zapl

+0

тоже здесь, все компилируется ... –

+0

Те должны были быть жирным синтаксисом для этого сайта, я не знаю, почему они их сохранили. – user3053545

ответ

0

Ваш код компилируется в порядке, похоже, что у вас есть 2 класса в разных пакетах. Чтобы исправить можно:

  1. поставил 2 классов в одном пакете

  2. импорта в DistanceBetween пакет в Node класса.

    import yourpackagename.DistanceBetween;

0

Убедитесь, что вы не имеете класс с именем DistanceBetween где-то в вашем проекте, или, в случае, если вы делаете, что вы импортируете право один, где код DistanceBetween вы Размещенное предназначенный для использования.

Инструмент «Открыть тип» в Eclipse (Ctrl + Shift + T) позволяет вам искать местоположение классов по вашей рабочей области.

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