2013-04-18 3 views
0

이 루프에 대한 도움이 필요합니다. 기본적으로 내가하려는 것은 루프를 실행하는 것입니다. 배열 문자열 챔피언에 첫 문자로 'B'문자가 포함되어 있으면 시간과 챔피언이 모두 표시됩니다.charAt를 사용하는 루프가 작동하지 않습니다.

누군가 내가 잘못했거나 왜 나타나지 않는지 말할 수 있습니까? 이 출력은 단지 "타임 챔프"입니다.

public static void displayTeam(short[] time, String[] champs){ 
    System.out.println("time  Champs"); 
    for(int a= 0; a < time.length; a++){ 
     char fletter=champs[a].charAt(0); 
     if("B".equals(fletter)){ 
      System.out.println(time[a] + "  " + champs[a]); 
     } 
    } 
} 

도움을 주신 모든 분들께 감사드립니다.

답변

8

이 교체 :이와

if("B".equals(fletter)) 

을 :

if('B' == fletter) 

char 같은 원시적 값 ==을 사용하는 것이 안전합니다.

fletterchar이므로 코드가 어떻게되는지는 다소 복잡합니다. 언뜻보기에 이것이 어떻게 컴파일되는지 궁금해 할 것입니다. 무슨 일이 벌어 지는지 String.equals는 인수로 Object 걸립니다. fletterchar이므로 Character 개체로는 auto-boxed이됩니다. 그런 다음 문자열 "B"이 인수와 동일한 지 확인하고 인수가 String조차 아니라고보고 false을 반환합니다.

+0

감사합니다. char를 사용하는 것에 대해 많이 알지는 못했지만 String을 사용하는 것에 대해 많이 알고있었습니다. 이것은 힙을 도왔다. : D 다시 한번 감사드립니다. – Daxter

4

문자열과 문자 사이에 차이가 있기 때문에 작동하지 않습니다. 차이점은 하나는 원시 값이고 하나는 그렇지 않습니다. 작은 따옴표 대신 큰 따옴표를 사용하면 작은 따옴표를 사용하는 String이 아닌 char을 사용합니다.

+0

그 점을 지적 해 주셔서 감사합니다. 나는 전혀 몰랐다. – Daxter