Привет, у меня возникла проблема с кодированием метода indexOf
этого LinkedList
объектов. Каждый раз я пытался вернуть «индекс» возвращает 3, который является ложным, потому что у меня только 3 номера в списке и индекс начинается с 0, так что самый высокий показатель был бы 2.Почему метод 'indexOf' моего собственного класса LinkedList возвращает неверный индекс?
import java.util.Scanner;
import java.util.*;
public class LinkedList<E>
{
static Scanner in = new Scanner (System.in);
protected class Node<E> {
public Object data;
public Node<E> next;
public Node(Object data)
{
this.data = data;
}
}
protected Node<E> first = null;
public void prepend(Object e)
{
Node<E> newnode = new Node<E>(e);
newnode.next = first;
first = newnode;
}
public int indexOf(Object e)
{
int index = 0;
Node<E> current = first;
while (current != null)
{
System.out.println(index);
if (current == e)
{
return index;
}
index++;
current = current.next;
}
return -1;
}
public static void main(String[] args)
{
LinkedList<Integer> list = new LinkedList<Integer>();
list.prepend(new Integer(1));
list.prepend(new Integer(2));
list.prepend(new Integer(3));
System.out.println(list.indexOf(2));
}
}
Ваш код возвращает «-1» для меня, и мне интересно, как ваш текущий код мог что-то найти, поскольку он не сравнивает узлы правильно. Он даже не сравнивает * узлы *, а только один узел против числа, который, очевидно, не может работать. – Tom
Я хотел бы сделать еще два предложения по вашему коду выше: «общедоступные данные объекта» могут быть лучше всего как «общедоступные данные E». И передайте тип параметра «E» для методов «prepend» и «indexOf». Похоже, это может быть ваше намеренное использование дженериков. –