2013-01-12 2 views
0

로또 클래스를 작성 중이며 나머지 코드는 일치하는 복권 번호를 비교하는 방법을 제외하고는 작동합니다. 나는 내 인생을 생각해 어떻게 성냥을 유지하고 그것을 돌려 보내는 지 알 수 없다.중첩 된 루프에서 변수 반환하기

나는 자바에 상당히 익숙해졌으며, 이것이 노골적으로 명백한 대답이라면 사과드립니다.

public int numIntsInCommon(int[] picks){ 
    int inCommon = 0; 

    for (int counter = 0; counter < 5; counter++) 
    { 
     for (int index = 0; index < 5; index++) 
     { 
      if (lotteryNumbers[counter] == picks[index]) 
       inCommon += 1; 

     } 
     return inCommon; 
    } 

    return inCommon; 
    } 

가 지금은 현재는 0 를 반환 어떤 도움을 크게 감상 할 수있다 :

는 여기에 내가 함께 일하고 방법에 대한 코드입니다! 감사합니다

+2

당신이 내부 return 문을하려고 했습니까? 그것은 귀하의 실행을 짧게하고 원하는 것보다 빨리 가치를 되돌릴 수 있습니다. – BlackVegetable

답변

2

for 루프에서 return inCommon을 제거하십시오. 외부 수익은 결코 도달하지 않습니다.

2

첫 번째 return 문은 메서드가 바깥 쪽 루프를 완료하기 전에 inCommon 값을 반환합니다. 첫 번째 반환 진술서의 요지는 전혀 모르겠다.

1
public int numIntsInCommon(int[] picks) 
{ 
    int inCommon = 0; 

    for (int counter = 0; counter < 5; counter++) 
    { 
     for (int index = 0; index < 5; index++) 
     { 
      if (lotteryNumbers[counter] == picks[index]) 
       inCommon++; 
     } 
    } 

    return inCommon; 
} 

이제 괜찮을 것입니다. 전에 한 일은 첫 번째 반복 이후에 중첩 된 루프에서 뛰어 내 렸습니다. 즉 : 중첩 된 반환 덕분에 루프가 카운터 = 1 후에 종료되었습니다.

+1

무엇''인덱스? 'user'가 첫 번째'return'을 놓은'index'가 없습니다. '카운터'변수 만 – Andremoniy

+0

오, 참으로 잊어 버렸습니다. 중첩 된 루프가 아니 었습니다. 감사! –

0

Java에서 "return"은 함수의 종료를 의미하므로 내부 루프에서 돌아 오면 외부 루프가 실행되지 않습니다. 어떤 경우이든.

0

당신은 자바 컬렉션 프레임 워크를 사용하여 다음 문제를 해결하는 것이 훨씬 같은 것을 쉽게 목록 같은 lotteryNumbers 및 추천을 정의하는 경우 :

public int numIntsInCommon(List<Integer> picks) { 
    List<Integer> matches = new ArrayList<Integer>(picks); 
    matches.retainAll(lotteryNumbers); 
    return matches.size(); 
}