2016-04-06 10 views
0

Oluşturduğum dairesel bağlantılı bir liste sınıfının sonuçlarını yazdırmak için bir yardımcı yöntemle bir toString var. Bu, çalışmaz gibi görünmektedir. 40, 10, 2 basması gereken bir test vakam var, ama sadece 40, 10 basıyor. Herkes bana bu konuda yardımcı olabilir mi?Dairesel Katlı Bağlantılı Liste toString çalışmıyor

+1

Yürütülmesini kalem ve kağıt ile takip ettiğinizde ne buldunuz? Ya da bir hata ayıklayıcı ile adım attığında? – Savior

+0

Baskı bildirimi, bir sebepten dolayı 40'ı ve sonra 2'yi basıyor ancak neden yaptığını bilmiyorum. Hata ayıklayıcılarla hiç deneyimim yok. – MegaZeroX

cevap

0

Bunu çözdüm. Bunu yayınladığım için üzgünüm, bunu kendi başıma yapmalıydım. Ben bitti:

/** 
    * Returns a String version of this. 
    * 
    * @return A String description of this. 
    */ 
    public String toString(){ 
    String string = ""; 
    DoubleNode<E> current = this.head; 
    string += stringHelper(this.head); 
    return string; 
    } 
    //Helps the full to string method 
    private String stringHelper(DoubleNode<E> node){ 
    String string = ""; 
    if(node == null){ 
     return string; 
    } 
    string+= node.getValue(); 
    string+= ", "; 
    node = node.getNextLink(); 
    if(node == this.head){ 
     return string; 
    } 
    else{ 
     string += node.getValue(); 
     return (string + ", " + stringHelper(node.getNextLink())); 
    } 
    } 
0

Sana doğru değil stringHelper() yöntemde iki kez node.getNextLink() çağrı gibi, stringHelper(node) ile özyinelemeli çağrı stringHelper(node.getNextLink()) yerine gerektiğine inanıyoruz.

+0

Söylediğim gibi değiştirdiğimde, yalnızca ilk öğeyi yazdırır, çünkü artık geçiş olmaz. – MegaZeroX

+0

Tüm sınıf kodu olmadan doğru cevabı vermek zor. Ama yine de senin problemin, iki kere node.getNextLink() 'yi çağırman. –