2015-01-04 3 views
-1

내 코드에는 do ... while 루프가 있는데, 나는 그것에 매달려있다. 문제는 조건이 두 arraylist의 비교이므로 처음 실행되고 조건이 false를 반환하지만 이후에는 arraylist에 숫자가 추가됩니다 (물론 프로그램이 실행되는 동안).) 둘 다 arraylist 같음 수 있도록, 지금은 루프를 계속하고 싶습니다,하지만 난 어떻게 해야할지 모르겠다.while 루프를 끝내고 호출하는 방법

어떤 제안을 이해할 수있을 것이다 :

do{...} while(ArrayList1.equals(ArrayList2)); 
+1

'둘 다 arraylist가 같음'이된다는 것은 무엇을 의미합니까, 당신은 그들의 크기가 같음을 의미합니까? –

+0

루프를 멈추려면 다른 조건을 찾아야합니다. 목록이 동일하지 않은 경우에도 루프를 실행하려면 중지 할 조건을 지정할 수 없습니다. – csmckelvey

+0

당신은'ArrayList1.equals (ArraList2)'를 comareing하고 있습니다. equals 메서드를 재정의 했습니까? – Razib

답변

0

가 다른 하나에이 루프를 중첩 생각 해 봤나? 이렇게하면 다시 통과하여 어떤 조건에서 외부 루프를 빠져 나올 수 있습니다.

0

수 없습니다. 루프가 끝나면 다음 명령문이 평가되고 조건이 true 인 경우에도 루프가 재검토되지 않습니다. 요소를 추가 할 수도 있습니다. 내부에 루프가 있습니다.

0

이 조건을 달성하면 무한 루프가 발생합니다. 왜이 논리를 달성하기를 원하는지 이해할 수 없습니다.

이렇게하려면 do..while 루프를 두 개의 ArrayList를 인수로 전달하는 별도의 개인 메서드로 추출 할 수 있습니다. (루프 내에서 필요한 다른 세부 사항에 따라 다름) 두 호출 사이의 목록 중 하나에 요소를 추가하는 논리로이 메소드를 두 번 호출하십시오. 뭔가 같은 것

private void executeDoWhile(List arrayList1, List arrayList2) 
{ 
    do{ .... } while (arrayList1.equals(arrayList2); 
} 

main() 
{ 
.... 
//call 1 
executeDoWhile(arrayList1, arrayList2); 

//logic to add the elements 

//call 2 
executeDoWhile(arrayList1, arrayList2); 
} 
+0

에서 동일한 숫자가 다시 나타납니다. arraylist가 다시 바뀔 것입니다. 그것은 메모리 게임과 같습니다. Simon Says의 종류입니다. 어쩌면 내가이 게임을 일에 적용 할 다른 방법을 찾을거야. – shaiws

관련 문제