2011-03-08 121 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])