2017-04-20 14 views
0

できるだけシンプルにしようとします。 Iペットのクラスは、オブジェクトた:coor 2台のフロート、経度と緯度を含有するだけの目的であるオブジェクトを使ったリンクリストでのJava toStringの印刷エラー

public class Pet { 
private String name; 
private int treats; 
private Coordinate coor; 
} 

留意されたいです。

実行可能クラスでは、私のPetList(リンクリスト)クラスの 'printAll()関数を呼び出します。私は私のペットクラス内の私のtoString関数を呼び出す私のprintAll()関数で

PetList List = new PetList(); 
... // adding nodes to my linkedlist etc. 
... 
List.printAll(); 

:私のtoString()関数で

public void printAll() { 
    LinkNode temp = first; 
    while(temp != null) { 
     System.out.print(toString()); 
     System.out.println(); 
     temp = temp.next; 
    } 
} 

、私はStringBuilderのを作成します。

// Most of this appending is formatting 
public String toString() { 
    StringBuilder sb = new StringBuilder(); 
    sb.append(name); 
    // sb.append("{"); 
    sb.append(treats); 
    // sb.append("} "); 
    //if(coor.getLatitude() >= 0) { 
    // sb.append("+"); 
    //} 
    sb.append(coor.getLatitude()); 
    // sb.append(" "); 
    //if(coor.getLongitude() >= 0) { 
    // sb.append("+"); 
    //} 
    sb.append(coor.getLongitude()); 
    return sb.toString(); 
} 

I EOFまで入力を読む:

add 3.0 3.0 Three // add(adds a node) with 2 floats (longitude & latitude) and Three(a name) 
add 2.0 2.0 Two 
add 1.0 1.0 One 

しかし、私は、印刷(のprintAll()を呼び出します)を呼び出したときに、私はこの取得:

add 3.0 3.0 Three 
add 2.0 2.0 Two 
add 1.0 1.0 One 
print 
[email protected] 
[email protected] 
[email protected] 

をしかし、私はこれが起こるしたい:

add 3.0 3.0 Three 
add 2.0 2.0 Two 
add 1.0 1.0 One 
print 
One{0} +1.0, +1.0 
Two{0} +2.0, +2.0 
Three{0} +3.0, +3.0 

私はわからないが、私は代わりに参照を取得しています実際のデータはどれですか?それは私が示したコードの何かに起因するのでしょうか?それとも別の場所ですか?どんな助けでも感謝しています!

編集:ここでは

Here is the beginning of my PetList class: 
public class PetList { 
    protected class LinkNode { 
     protected LinkNode next; 
     protected LinkNode prev; 
     protected Pet animal; 

     public LinkNode() { 
      next = prev = null; 
     } 
    } 

が、私は今のtoString関数を呼び出す方法です:

//public void printAll() { 
// LinkNode temp = first; 
// while(temp != null) { 
     System.out.print(animal.toString()); 
//  System.out.println(); 
//  temp = temp.next; 
// } 
//} 

そしてここでは、コンパイルしようとしたとき、私は取得していますエラーです:

PetList.java:36: error: cannot find symbol 
      System.out.print(animal.toString()); 
          ^
    symbol: variable animal 
    location: class PetList 
+4

あなたPetListクラスは、独自のtoString()メソッドを持っています、LinkNodeのインスタンス変数のですか?今はObject.toString()メソッドを使用しています。 – Jason

+0

ああ私の良さそうではありませんので、私は今までこのtoStringメソッドを呼び出していませんでした。 – Coder117

+0

私のPetListクラスでは、私は 'ペットペットを保護しました 'エラー。 ./PetList.java:37:エラー:シンボルが見つかりません System.out.print(animal.toString()); ' – Coder117

答えて

1

最新のコードスニペットに基づく:

 System.out.print(animal.toString()); 

は... animalとして

 System.out.print(temp.animal.toString()); 

あるべきではないPetList

+0

それは働いた!どうもありがとうございます! – Coder117

関連する問題