こんにちは私はオブジェクトのこのLinkedList
のindexOf
メソッドをコーディングするのに問題があります。毎回私は「インデックス」私は、リスト内の3つの数字を持っているので、それが偽である3を返し、インデックスは0から始まるので、最高の指数は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"を返し、ノードを正しく比較しないので、あなたの現在のコードが何かを見つけることができるのだろうかと思います。 *ノード*を比較することさえありません。明らかに動作できない数字に対して1つのノードだけが比較されます。 – Tom
上記のコードでさらに2つの提案をしたいと思います。「パブリックオブジェクトデータ」は、「パブリックEデータ」として最適かもしれません。また、 "prepend"と "indexOf"メソッドにはパラメータ型 "E"を渡します。私はこれがジェネリック薬の意図された使用かもしれないように見えます。 –