Я пытаюсь написать функцию для возврата количества узлов в списке в 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());
}
Я не знаю, в чем проблема с моим выходом. и я очень хочу знать, как пройти тесткейс. Пожалуйста, помогите мне разобраться. спасибо большое заранее!!
Условие (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;
}
Учитывая, что это домашнее задание, я дам вам несколько советов о том, как вы можете решить проблему. В getNoOfWaypoints() текущее значение проверяется каждый раз, но никогда не обновляется.
int getNoOfWaypoints()
{
int count = 1;
TourElement current = getNext();
while(current.next != null)
{
count++;
System.out.println(count);
}
return count;
}