2013-09-01 2 views
-2

Player라는 클래스가 있습니다. 이 클래스 안에는 몇 개의 플레이어 개체가 저장되어 있으며 모든 개체에는 "이름", "점수"및 "색"이 있습니다. 내가 처리하고있는 객체에 따라 TextView 색상을 설정해야하는 메소드를 만들었습니다. 코드는 다음과 같습니다.IF 문은 메서드 내에서 절대 실행되지 않습니다.

public void setTextViewColor(TextView tw, String playerColor){ 

    Log.i("TAG", playerColor); 

    if (playerColor == "BLACK") 
    { 
     tw.setTextColor(Color.BLACK); 
     Log.i("TAG", "tw color now black"); 
    } 
    else if (playerColor == "BLUE") 
    { 
     tw.setTextColor(Color.BLUE); 
     Log.i("TAG", "tw color now blue"); 
    } 
    else if (playerColor == "CYAN") 
    { 
     tw.setTextColor(Color.CYAN); 
    } 
    else if (playerColor == "DKGRAY") 
    { 
     tw.setTextColor(Color.DKGRAY); 
    } 
    else if (playerColor == "GRAY") 
    { 
     tw.setTextColor(Color.GRAY); 
    } 
    else if (playerColor == "GREEN") 
    { 
     tw.setTextColor(Color.GREEN); 
    } 
    else if (playerColor == "LTGRAY") 
    { 
     tw.setTextColor(Color.LTGRAY); 
    } 
    else if (playerColor == "MAGENTA") 
    { 
     tw.setTextColor(Color.MAGENTA); 
    } 
    else if (playerColor == "RED") 
    { 
     tw.setTextColor(Color.RED); 
    } 
    else if (playerColor == "YELLOW") 
    { 
     tw.setTextColor(Color.YELLOW); 
    } 
} 

이제는 IF 또는 ELSE 문이 실행되지 않습니다. 이것은 내가 방법을 호출하는 방법입니다

setTextViewColor(newTextView, newPlayer.color); 

방법은 내가 그것을 실행할 때마다, 나는 색상 (색상이 항상 정확) 알리는 로그 캣 메시지를 볼 수 있기 때문에 작업 할 예정이다. 하지만 나는 "tw color now black"또는 "tw color now blue"라는 메시지를 보지 못했습니다. 그래서 나는 IF 문에 잘못된 것이 있다는 것을 확신합니다.

태그는 문을 실행하도록되어있는 경우 playerColor를 잘 작성 후, 최초의 "BLACK"입니다 말한다면? 그러나 그렇지 않습니다.

+0

당신이 '등호()'방법을 사용합니다. – Sajmon

+0

감사합니다, 매력처럼 작동합니다! 나는 그 같은 어리석은 실수를했다고 믿을 수 없다. 나는 당신이 문자열을 equals()와 비교해야한다는 것을 잘 알고있다. – Guy

+0

Java 7을 사용하는 경우 스위치를 사용할 수도 있습니다. 즉, 번역하는 것 같아서'Map' 만 사용해야합니다. –

답변

1

당신은 .equals()를 사용해야합니다 : 사용자 gunar 언급

if(playerColor.equals("BLACK")) 

,이 안전하다 (playerColor가 null이 될 수 있기 때문에) :

"BLACK".equals(playerColor) 
+0

이것은 중복 질문에서 이미 다룹니다. 답을 다시 게시하는 대신이 질문을 중복으로 투표하십시오. – Makoto

+3

''BLACK ".equals (playerColor)'는'playerColor'가 null 일 수 있기 때문에 더 안전합니다. – gunar

+0

@gunar 좋은 지적. –

관련 문제