2017-11-30 3 views
1

Java로 메소드를 작성했습니다.이 메소드는 크기가 3 인 배열을 각 요소로 포함하는 배열리스트를 취합니다. 예 : {{0,0,0}, {1,0,0}, {1,1,0} ...}.큐 상단을 배열리스트 요소와 비교하기

대기열의 헤드가이 배열 목록 안에있는 경우이 방법을 사용할 수 있습니다.

큐의 구조는 배열 목록과 동일합니다.

public static Queue<Integer[]> q = new LinkedList<Integer[]>(); 
List<Integer[]> outcomes = new ArrayList<Integer[]>(); 

Public static boolean outcomeSearch(List<Integer[]> outcomes){ 
boolean check = false; 
for (int i=0; i<outcomes.size(); i++){ 
    if (q.peek() == outcomes.get(i)){ 
     check = true; 
    } 
} 
return check; 
} 

어떤 이유로 if 문을 사용할 수 없습니다. 실제로 대기열의 헤드는 {0,0,0} 이고 결과는 {{0,0,0}, {8,0,0}, {0,5,0} ...}입니다. 따라서 for 루프는 첫 번째 반복에서 check boolean을 true로 설정해야합니다. 그러나 그렇지 않습니다.

이 문제는 전체 배열 자체가 아닌 배열 내부 요소를 비교합니다.

답변

0

문제는 아마도 대기열이 선언 된 방식이며 따라서 메소드에서 구현되는 방식 인 것 같습니다. 큐를 정적 또는 클래스의 인스턴스 변수로 선언하는지 확인하십시오.

+0

OP가 q의 정의를 우리에게 보여주지 않았기 때문에 우리는 알 수 없지만 그것도 비교되는 방식 일 수 있습니다. – max

+0

대기열은 다음과 같이 선언됩니다. public static Queue q = 새 LinkedList (); –

+0

q LinkedList를 인쇄하여 비어 있지 않은지 확인하십시오. 나는 당신의 코드에 잘못된 것을 보지 않는다. – ferpujol