为什么我自己的'LinkedList'类的'indexOf'方法返回错误的索引?

时间:2016-12-10 06:50:18

标签: java linked-list indexof

您好我在编码此indexOf个对象的LinkedList方法时遇到问题。每当我试图返回“index”时,它返回3,这是假的,因为我在列表中只有3个数字,索引从0开始,所以最高索引是2。

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 个答案:

答案 0 :(得分:0)

if (current==(e))

需要

if (current.data.equals(e))

一个。但这并没有解释你如何得到3结果。

澄清:

&#34;但这并不能解释你如何得到3。&#34;

我不确定O.P.实际上得到了3分。看看代码,我发现了明显的错误,但质疑他们对原始问题的理解和措辞。

考虑到这一点,这是一个完整的答案。