2014-03-26 2 views
0

사용자 입력을 다른 문자열과 비교하는 스크립트를 만들려고합니다. 문제는 if 문 때문입니다. 오류는 발생하지 않지만 항상 "else"문에있는 결과를 반환합니다. 당신이 String을 비교할 때If 문은 "else"문에서 결과 만 반환합니다.

String [] lessons_titles = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","30","40","50","60","70","80","90"}; 

final TextView dan_view = (TextView)findViewById(R.id.DanText); 
final int position = getIntent().getExtras().getInt("position"); 
final String title = lessons_titles[position]; 

check_b.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      String textField = check_text.getText().toString(); 
      if (textField == title){ 
       dan_view.setTextColor(Color.GREEN); 
      } 
      else { 
       dan_view.setTextColor(Color.RED);     
      }       
     } 
    }); 

답변

3

사용 equals() 방법 대신 == 운영자 : 여기에 코드입니다. String의 경우 두 문자열은 참조가 동일하고 두 점이 모두 같은 점을 참조하는 경우 equals() 메서드를 사용해야 만 동일하게됩니다. == 연산자는 기본 유형 값만 비교할 수 있지만 String의 인스턴스는 object입니다. 다음과 같이

그래서, 당신의 상태가

if (textField.equals(title)){ 
    dan_view.setTextColor(Color.GREEN); 
} else { 
    dan_view.setTextColor(Color.RED); 
} 
0

귀하의 오류가 여기에있다 ...해야한다 :

if (textField == title){ //<-- 

에 textField 문자열, 당신은, .equals() 예를 사용하여 문자열 평등을 확인해야

if (textField.equals(title)){ //<-- 
0

사용이

if (textField.compareTo(title) == 0) 
{ 
    dan_view.setTextColor(Color.GREEN); 
} 
    else { 
     dan_view.setTextColor(Color.RED);     
    }  
관련 문제