请允许我首先道歉,如果这是荒谬的基本。这是我第一次编程。
这里的问题是我需要打印一个LinkedList。有人能告诉我我哪里做错了吗?我有:
public class Queue {
private LinkedList list;
public Queue() {
list = new LinkedList();
}
}
public class BankQueue {
static Queue q = new Queue();
public static void main(String[] args) {
//Insert a menu with a list of possible choices
public static void printQueue(Queue q) {
for (String s : q) {
System.out.println(q);
}
}
我一直得到错误提示说我只能迭代一个数组或者java。lang。iterable的实例。谢谢你的帮助。非常感谢。
你需要遍历列表,而不是遍历你的类实例,它实际上没有实现Iterable
,比如
public void printQueue(Queue q) {
for(String s : q.getList()) {
//do anything with your string
}
}
当然,这意味着您的LinkedList
实际上是LinkedList<String>
,并且您在类中声明了list
字段的getter,如public List<String> getList() { return list; }
。
你的类Queue
是不可迭代的。
java.util.Queue
冲突,其中是可迭代的。如果你真的想迭代Queue
的list
成员,你需要为它提供一个getter(它是私有的),或者自己写一个Visitor。
您似乎没有在q
的list
成员上迭代。您需要实现Iterable
接口,或者直接迭代q.list
。
真正正确的方法是实现Iterable
。
您需要像下面这样使用迭代器遍历LinkedList:
iterator = q.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next()+" ");
}