Итерация по набору транзакций с помощью итератора
The method below is basic insight of what I am planning to output: the account part works but when I try to print along with the transactions I get the nullpointer exception. The reason is I am using my own queue implementation, underneath the method is my iterator so far but I have no clue what I am missing for this to not work? public void Display_Account() { System.out.println("Student ID: " + Student_ID); System.out.println("Student Name: " + Student_Name); System.out.println("Student Email: " + Student_Email); System.out.println("Creation Date (DD/MM/YYYY): " + Creation_Date); System.out.println("Credit: " + Credit_Balance); System.out.println("*----------------------*"); // Code indicates not applicable to expression type and requires iterable to be implemented for (Student_Transaction Tr : Transaction) { Tr.Display_Transaction(); } } Therefore, I will need to implement the Iterator in my queue class which is the data structure I am using to add or remove objects, despite I'm missing few errors but I dont know where. // Queue uses class List. import java.util.Iterator; public class Queue <t> implements Iterable <t> { private List<t> queueList; private int capacity; // no-argument constructor public Queue() { queueList = new List<>("queue"); capacity = 1; } // end Queue no-argument constructor @Override public Iterator<t> iterator() { return null; } class QueueIt implements Iterator<t> { // Where the iterator problem is in particular! public class QueueIt implements Iterator<t> { @Override public boolean hasNext() { return false; } @Override public T next() { return null; } } // add object to queue public void enqueue(T object) { queueList.insertAtBack(object); capacity++; } // end method enqueue // remove object from queue public T dequeue() throws EmptyListException { return queueList.removeFromFront(); } // end method dequeue public void Decrement() { capacity--; } public int Size() { return capacity; } // determine if queue is empty public boolean isEmpty() { return queueList.isEmpty(); } // end method isEmpty // output queue contents public void print() { queueList.print(); } // end method print } What I have tried: Every example I have found are related to LinkedList. Dont get me wrong Queue is a member of LinkedList and the bigger picture (Collections utility and iterator). But I am not sure what I am missing out that my Code wont Iterate through objects. P.S If you need to see my List class just say so and I will edit the Snippet above.
Richard MacCutchan
Итератор является неполной, next()
возвращается null
и hasNext()
возвращается false
Но все это вызывает вопрос, почему вы не используете классы, которые уже предоставляет Java?
PL8YR
Ну, как вы можете видеть, я сделал две версии своей программы: Первая версия использует все импортированные пакеты из Java. Это версия выше, где я не использую ни один из пакетов java, все они реализованы вручную.
Поэтому, как было сказано выше, я реализовал свою собственную очередь, мне просто нужно руководство к тому, что мне нужно поместить в мои методы next и hasnext, если вы знаете какие-либо хорошие примеры, связанные с очередями, я был бы признателен :)
PL8YR
Не поймите меня неправильно, я мог бы просто использовать импорт java.util.queue/linkedList/Collections/Iterator, но, как я уже сказал, я использую свои собственные реализации
Richard MacCutchan
Посмотрите документацию для этих методов в стандартной Java. hasNext
возвращает логическое значение, указывающее, есть ли элемент, ожидающий удаления из очереди. И next
возвращает вызывающему объекту следующий элемент.