2013-04-25 7 views
2

어리석은 초보자 인 경우 먼저 사과하겠습니다. 이것은 처음 프로그래밍입니다.LinkedList를 통해 Java 반복하기

여기에서 문제는 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의 인스턴스를 반복 할 수 있다고 점점 오류의 말을 유지. 도와 주셔서 감사합니다. 진심으로 감사드립니다.

답변

3

당신은 물론

public void printQueue(Queue q) { 
    for(String s : q.getList()) { 
     //do anything with your string 
    } 
} 

처럼하지 사실 Iterable를 구현하지 않는 클래스 인스턴스 통해를 목록 반복 할 필요가, 당신의 LinkedList 사실 LinkedList<String>에 있음을 의미한다 클래스에서 list 필드에 대한 getter가 public List<String> getList() { return list; }과 같이 선언되어 있습니다.

+0

나는 게터를 추가했다,하지만 그건 내 문제를 해결. 도와 주셔서 감사합니다! – user2173870

+0

여러분을 환영합니다! – skuntsel

0

list 구성원의 반복 작업이 q 인 것으로 보입니다. Iterable 인터페이스를 구현하거나 q.list을 직접 반복해야합니다.

정말 적절한 방법은 Iterable을 구현하는 것입니다.

1

클래스 Queue은 반복 할 수 없습니다.

덧붙여 그 이름은 java.util.Queue이고, 입니다.

Queue의 회원 인을 반복적으로 처리하려는 경우 해당 항목 (개인 정보)을 제공하거나 방문자를 직접 작성해야합니다.

+0

"Queue"를 이미 사용하고 있다는 것을 실제로 깨닫지 못했습니다. 아마도 나는이 이름을 바꿀 것입니다 ... – user2173870

0

당신은 다음과 같은 LinkedList의를 통해 루프 반복자를 사용할 필요가 :

iterator = q.iterator(); 
    while (iterator.hasNext()) { 
    System.out.print(iterator.next()+" "); 
} 
+0

OP는 자신의'Queue' 클래스를 정의했습니다.이 클래스는'Iterable'을 구현하지 않으므로'iterator()'메소드를 가지고 있지 않습니다. – GriffeyDog

+0

당신이 맞아요, 큐 – Lavanya

+0

아의 사용자 지정 구현을 통지하지 않았다. 그게 내가 왜 일을 못하게하는지 설명해줍니다. 수업 이름과 혼동해서 죄송합니다. 나는 이미 "대기열"에 대한 사용이 있다는 것을 깨닫지 못했습니다. 어쨌든 고마워. – user2173870