как я могу посчитать общее количество узлов List Structures в Java - PullRequest
1 голос
/ 28 мая 2019

Я пытаюсь написать функцию, которая возвращает количество узлов в списке в Java.

У меня есть точка пути с именем класса, она определяет точку и другой класс с именем TourElement. TourElement используется для создания узлов, содержащих точку.

// Точка

public class Waypoint {
    int x  ;
    int y  ;
    public int getX()
    {
        return this.x;
    }
    public int getY()
    {
        return this.y;
    }
    public void setXY(int x, int y)
    {
        this.x = x;
        this.y = y;
    }

// Элемент тура

public class TourElement {
 private Waypoint points;
 private TourElement next;
  public void setWaypoint( Waypoint points)
 {
   this.points = points; 
 }
  public void setTourElement(TourElement next)
  {
      this.next = next;
  }
 Waypoint getWaypoint()
 {
     return this.points;
 }

 TourElement getNext()
 {
     return this.next;
 }

// У меня проблемы с методом getNoOfWaypoints (), что не так с моим кодом? мой метод не проходит контрольный пример:

int getNoOfWaypoints()
{
    int count = 1;
    TourElement current = getNext();
    while(current.next != null)
    {
        count++;
        System.out.println(count);
    }
    return count;
}

// тесты предоставлены моим учителем

  private Waypoint createWaypoint(int x, int y) {
        Waypoint wp = new Waypoint();
        wp.setXY(x, y);
        return wp;
    }


    private TourElement createElementList(int[][] waypoints){
        assert waypoints.length > 0;
        TourElement elem = new TourElement();
        int lastIndex = waypoints.length-1;
        Waypoint wp = createWaypoint(waypoints[lastIndex][0], waypoints[lastIndex][1]);
        elem.setWaypoint(wp);
        for (int i = lastIndex-1; i >= 0 ; i--) {
            wp = createWaypoint(waypoints[i][0], waypoints[i][1]);
            elem = elem.addStart(wp);
        }
        return elem;
    }



public void testGetNoOfWaypoints_NotChangingList() {
        TourElement elem = createElementList(new int[][] {{0, 0}, {1, 1}, {2, 2}});
        int unused = elem.getNoOfWaypoints();

        assertArrayEquals(new int[] {0, 0}, elem.getWaypoint().toArray());
        assertArrayEquals(new int[] {1, 1}, elem.getNext().getWaypoint().toArray());
        assertArrayEquals(new int[] {2, 2}, elem.getNext().getNext().getWaypoint().toArray());
        assertNull(elem.getNext().getNext().getNext());
    }

Я не знаю, в чем проблема с моим аутом. и я действительно хочу знать, как пройти тест. Пожалуйста, помогите мне разобраться. заранее большое спасибо !!

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Учитывая, что это домашнее задание, я дам вам несколько советов о том, как вы можете решить проблему. В getNoOfWaypoints () ток проверяется каждый раз, но он никогда не обновляется.

int getNoOfWaypoints()
{
    int count = 1;
    TourElement current = getNext();
    while(current.next != null)
    {
        count++;
        System.out.println(count);
    }
    return count;
}
0 голосов
/ 28 мая 2019

Условие (current.next != null) будет либо всегда false, либо всегда true, поскольку вы никогда не изменяете current внутри цикла.

Оно должно быть:

int getNoOfWaypoints()
{
    int count = 1;
    TourElement current = getNext();
    while(current.next != null)
    {
        count++;
        System.out.println(count);
        current = current.next;
    }
    return count;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...