2011-03-08 8 views
0

다음 코드는 내 프로그램자바 문자열 비교

String [] currency = { "Euro" , "USD" , "Pound" }; 
private JComboBox 
C1 = new JComboBox(currency), 
C2 = new JComboBox(currency); 
String s,r; 
double i,j =0,k=0; 

................

private ActionListener d = new ActionListener() { 
public void actionPerformed(ActionEvent e) { 
Object obj = C2.getSelectedItem(); 

r = "" + obj; 
st.setText(r); 
System.out.println(r); 
System.out.println(currency[0]); 

if (r == currency[0]) 
{ 

k=1; 
} 

if (r == currency[1]) 
{ 
k = 1.161; 
} 

if (r == currency[2]) 
{ 
k= 0.954; 
} 
System.out.println(k); 
} 
}; 

을의 일부입니다 출력은 통화 [0]의 인쇄와 동일한 경우입니다. 문제는 k가 항상 0.00으로 간주된다는 것입니다. 나는 그것이 문자열의 비교와 관련이 있다고 생각합니다.

감사합니다.

+1

먼저 자바 문자열 비교를 검색 했습니까? – patros

+0

일주일에 적어도 한번은 ... –

답변

4

만 (즉, 메모리 위치가 아닌 실제 내용 평등을) 참조를 비교하는 객체에 ==를 사용하는 경우 일예로 문자열 비교, "string".equals("other string"); 또는 귀하의 경우

r.equals(currency[0]) 

에서 사용 equals.

통화 샘플에 Enums을 (를) 사용하는 데 관심이있을 수도 있습니다.

3

r.equals(currency[0]) 

또는

r.equalsIgnoreCase(currency[0]) 

당신은 문자의 경우에 대해 걱정하지 않는다

하여 두 개의 문자열을 비교 (대문자 또는 소문자) 당신이 equals를 사용해야합니다

0

문자열 비교를 수행하고 null이 아닌 문자열을 먼저 넣어야합니다.

또는 귀하의 경우

"Hello".equals(myString) 
:

r.equals(currency[0])