2011-03-08 167 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); 
} 
}; 

的一部分當r被印刷在輸出對於貨幣[0]的打印是一樣的情況。問題是k始終被視爲0.00。我認爲這與字符串的比較有關。

謝謝。

+1

難道你搜索的java字符串比較第一? – patros 2011-03-08 18:07:25

+0

每週至少出現一次... – 2011-03-08 18:56:06

回答

4

的字符串比較例如,"string".equals("other string");或在您的案件

r.equals(currency[0]) 

當對象使用==你只比較引用(即內存位置,而不是實際的內容相等)使用equals

您可能也有興趣使用Enums作爲您的貨幣樣本。

3

通過

r.equals(currency[0]) 

r.equalsIgnoreCase(currency[0]) 

,當你不關心的人物的情況下,這兩個字符串比較(大寫或小寫)

0

您應該使用equals爲字符串比較,並記住首先將不是null的字符串:

"Hello".equals(myString) 

或在您的情況:

r.equals(currency[0])