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
cevap
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()));
}
}
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.
Söylediğim gibi değiştirdiğimde, yalnızca ilk öğeyi yazdırır, çünkü artık geçiş olmaz. – MegaZeroX
Tüm sınıf kodu olmadan doğru cevabı vermek zor. Ama yine de senin problemin, iki kere node.getNextLink() 'yi çağırman. –
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
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