2016-10-22 20 views
1

ここに私の2つのクラスNameNodeとNameListがあります。私の問題は、NameListクラスのprint()メソッドにあります。私が2つの名前を持っていれば、 "Lee"と "Jim"と言うことができます。この方法を使うと "Lee"だけが出力されます。 appendメソッドがリストに追加できなかった場合や、tmpがリスト内の次のオブジェクトに進まないようにするステップエラーがあるかどうかはわかりません。どんな助けもありがとうございます。単独リンクされたリスト印刷メソッドは最初のオブジェクト(Java)を印刷します

public class NameNode { 
private String lastName; 
private NameNode next; 
public NameNode(String lastName, NameNode toNext) 
{ 
    this.lastName = lastName; 
    this.next = toNext; 
} 
public String getName() 
{ 
    return lastName; 
} 
public NameNode getNext() 
{ 
    return next; 
} 
public void setNext(NameNode next) 
{ 
    this.next = next; 
} 
public String toString() 
{ 
    return lastName; 
} 
} 




public class NameList { 
private NameNode names; 
public NameList() 
{ 
names = null; 
} 
public boolean isEmpty() 
{ 
    return names == null; 
} 
public void append(String name) 
{ 
if(names == null) 
{ 
names = new NameNode(name,null); 

} 
else 
{ 
    NameNode tmp = names; 
    //tmp = names; 
    while(tmp.getNext() != null) 
    { 
     tmp = tmp.getNext(); 
     tmp.setNext(new NameNode(name,null)); 

    } 

} 
    null 
} 

public void print() 
{ 
    NameNode current = names; 
    while(current != null) 
    { 
     System.out.println(current.getName()); 
     current = current.getNext(); 
    } 

    } 
    } 

答えて

1

appendの機能がNameListにあります。あなたのコードでは、2番目の名前を追加すると、プログラムはelse文に進み、whileループの条件に対してfalseを評価し、2番目のノードを追加しません。したがって、あなたのコードは常に最初の要素だけを入力することができます。 訂正された追加機能を参照してください。うまくいけば、それは仕事をするでしょう。

public void append(String name) 
{ 
    if(names == null)  { 
    names = new NameNode(name,null); 
    } 
    else{ 
    NameNode tmp = names; 
    while(tmp.getNext() != null){ 
     tmp = tmp.getNext(); 
    } 
    tmp.setNext(new NameNode(name,null)); 
    } 
} 
0

あなたは、コンストラクタで、ここで1つの名前だけを渡している、とあなたはgetName()方法を見れば、あなたは一つだけlastNameを持って表示されますので。

public NameNode(String lastName, NameNode toNext) 
{ 
    this.lastName = lastName; 
    this.next = toNext; 
} 
public String getName() 
{ 
    return lastName; 
} 

もう一つは、他の一方がこのprivate String lastName;であるあなたが初期化されているだけで1つの文字列がありますか?

+0

私は戻ってあなたが言ったことを見ましたが、それは問題ではありませんでした。 NameListクラスのappendメソッドでエラーを修正して、印刷の問題を修正しました。私は "tmp.setNext(新しいNameNode(name、null);"という行をループの外に移動しなければならなかったので、私が知る限りすべてを修正しました。 – Rconno

関連する問題