안녕하세요.이 LinkedList
개체의 indexOf
메서드를 코딩하는 데 문제가 있습니다. 매번 나는 단지 목록에서 3 개 개의 숫자를 가지고 인덱스가 너무 가장 높은 지수가 2내 'LinkedList'클래스의 'indexOf'메서드가 잘못된 인덱스를 반환하는 이유는 무엇입니까?
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 데이터"로 가장 적합 할 수 있습니다. "prepend"및 "indexOf"메서드에 대해 매개 변수 유형 "E"를 전달합니다. 제네릭이 의도 한 용도 일 수 있습니다. –