2014-01-14 6 views
0

내 응용 프로그램에서 String 형식의 값 목록이 있습니다. 반복하고 각 문자열의 값을 다른 문자열로 비교하고 true 값을 반환하면 true이고 그렇지 않으면 false입니다.Java for 루프 반복

List<String> roleNames = new ArrayList<String>(); 
roleNames.add("AAA"); 
roleNames.add("MMM"); 
for (int i=0 ; i<roleNames.size();i++){ 
// if(loggedInRole.equals(roleNames.get(i))){ 
    if("AAA".equals(roleNames.get(i))){ 
     enableLink = "true"; 
    } 
    else { 
     enableLink = "false"; 
    } 
} 

위의 코드에서 나는 결과를 true로 예상하지만 두 번째 itertion에서는 결과를 false로 반환합니다. 이 문제를 해결하는 방법?

+1

두 번째 반복에서 값은 "MMA"가 아니라 "AAA"입니다.이게 실제로 완전한 루프입니까? 실제로 당신이 * 아무 것도 반환하지 않는다는 것에 주목하십시오 ... –

+0

왜 enableLink를 부울로 선언하지 않았습니까? – Will

+4

힌트 :'ArrayList'를 통해 루핑하는 대신'enableLink = roleNames.contains ("AAA");' –

답변

5

일치 항목을 찾을 때 break 문을 추가하십시오. 루프에서 빠져 나가지 않으면 "MMM"을 반복 할 때 enableLink"false"으로 다시 설정합니다.

또한 루프를 시작하기 전에 enableLink"false"으로 설정해야합니다. 그것은 가치가 무엇인지에 대한

enableLink = "false"; 

for (int i = 0; i < roleNames.size(); i++) { 
    if ("AAA".equals(roleNames.get(i))) { 
     enableLink = "true"; 
     break; 
    } 
} 

, 당신은 명시 적 루프가 필요하지 않습니다 : 표준 "이 배열을 검색"루프처럼 보인다. 다음과 같이 쓸 수 있습니다 :

boolean enableLink = roleNames.contains("AAA"); 
+0

그것만 큼 간단합니다. BREAK 나에게 상기시켜 주셔서 감사합니다. 작동 했어. 고마워. 톤. – tom

5

조건을 만족하는 값 하나를 찾았 으면 루프를 해제해야합니다. 그렇지 않으면 은 "true"이고 목록의 마지막 요소는 "AAA"과 같습니다.

또한 contains 메서드를 살펴 봐야합니다.