2015-10-30 3 views
0

EDIT: Я считаю, что проблема заключается в добавлении узлов. Когда я запускаю выборку узлов, они возвращаются в нуль. Я считаю, что это потому, что head не получает настройки, поскольку impl.getHeadNode() == null никогда не возникает.Узел getter не возвращает значение настройки

Constructor:

public CashDonationLinkedListImpl() { 
iterNode = headNode = new CashDonationNode(null); 
} 

Добавить метод:

public void add(Object obj) { 
    CashDonation cashDonation = (CashDonation)obj; 
    CashDonationLinkedListImpl impl = new CashDonationLinkedListImpl(); 

    CashDonationNode node = new CashDonationNode(); 
     node.setCashDonation(cashDonation); 
     //node.setNext(null); 
    if(impl.getHeadNode() == null){ 

     System.out.println("Head node"); 
     impl.setHeadNode(node); 

     } 
     else{ 
     //node.setCashDonation(cashDonation); 
     //node.setNext(null); 
     for (CashDonationNode cashNode = headNode;cashNode.getNext() != null;cashNode = cashNode.getNext()) { 
      // currNode.setNext(null); 
     }   

      //cashNode.setCashDonation(cashDonation); 

     cashNode.setNext(node); 

     } 

Оригинал: Поглотитель возвращает два нуля, а связующий занимает в 100, 100 и 10000. Я уверен, что я забывая что-то сделать, но не могу на нее наложить. Почему геттер не возвращает значения из сеттера?

public class CashDonationNode { 
    CashDonation cashDonation; 
    CashDonationNode next; 

    public CashDonationNode() { 
     cashDonation = new CashDonation(); 
     next = null; 
    } 

    public CashDonationNode(CashDonation cashDonation, CashDonationNode next) { 
     this.cashDonation = cashDonation; 
     this.next = next; 
    } 

    public CashDonationNode getNext(){ 
     return next; 
    } 
    public void setNext(CashDonationNode nextValue){ 
     this.next = nextValue; 
    } 
    public void setCashDonation(CashDonation cashDonation){ 
     this.cashDonation = cashDonation; 
     System.out.print("node storage"); 
     System.out.println(this.cashDonation.getDonationAmount()); 
    } 

    public CashDonation getCashDonation(){ 
     System.out.println("node retrieval " + cashDonation.getDonationAmount()); 
       return this.cashDonation; 
    } 
} 

Фрагменты из списка ниже. Возвращает те же нули:

CashDonationNode iterNode = new CashDonationNode(); //declared in class 
public void iterator() { 
    iterNode = headNode; 
} 

@Override 
public CashDonation next() { 
CashDonation cashDonation = iterNode.getCashDonation(); 
System.out.println("Impl: " + cashDonation.getDonationAmount()); 
    iterNode = iterNode.getNext(); 
    return cashDonation; 
} 
+0

Ничего не торчит здесь. Пожалуйста, добавьте код, который использует этот класс, плюс класс «CashDonation» (и удалите любой нерелевантный код). A [mcve], поэтому мы можем видеть проблему для себя. –

+0

Не уверен, что все будет уместно включить. Узел является частью связанного списка, вызываемого менеджером. Менеджер вызывается из части основного класса. Класс CashDonation отлично работал при работе с массивами и не менял его с тех пор. Начните с включения частей тех, кто имеет дело со следующим()? –

+0

@Nicholas Yount Можете ли вы предоставить класс CashDonation? так что мы можем понять, почему геттер возвращает неожиданное значение. – Truthira

ответ

0

Исправленная надстройку():

public void add(Object obj) { 
    CashDonation cashDonation = (CashDonation)obj; 
    CashDonationNode node = new CashDonationNode(cashDonation); 
    this.setIterNode(node); 

    if(this.getHeadNode() == null){ 
     this.setHeadNode(node); 
     node.setNext(null); 
     } 
     else{ 
     CashDonationNode cashNode; 
     for (cashNode = headNode;cashNode.getNext() != null;cashNode = cashNode.getNext()) { 
     }   
     cashNode.setNext(node); 
     } 
    numElements++; 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^