2015-03-13 53 views
-2

我比較兩個字符串中的if else block..if這是真的如果塊應該執行,如果是假的其他塊應該execute..but我的代碼始終執行其他塊既真&假condition..here是我的代碼我得到錯誤的答案用的if else塊

if(deckey==keystr) 
{ 
. 
. 
} 
else 
{ 
System.out.println("your unauthorised person"); 
System.exit(0); 
} 

我deckey是包含字符串值ABC123和keystr我是這裏面也ABC123所獲得的價值(我通過arraylist)

ArrayList<Integer> listfkey= new ArrayList<Integer>(); 
String keystr=" "; 
for (int i = 0; i < listfkey.size(); i++) { 
dech=(char)listfkey.get(i).intValue(); 
keystr+=dech; 
} 

請幫我..

+1

比較這樣的字符串將不會很好:你所做的只是比較引用。改用.equals方法。 – Bathsheba 2015-03-13 15:32:27

+1

可能的重複[如何比較Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – 2015-03-13 15:33:24

+0

請不要downvote well-posed問題是重複的(除非答案很容易通過搜索獲得)。投票結束。 – Bathsheba 2015-03-13 15:42:10

回答

3

字符串需要使用.equals法平等進行測試:

deckey.equals(keystr) 

不是==運營商,測試兩個字符串實例是相同的:

deckey==keystr 
+2

你也可以使用'deckey.equalsIgnoresCase(keystr)',所以它不關心大寫/小寫。在處理任何字符串之前進行空/空檢查也是一個好主意:'StringUtils.isEmpty(deckey)|| StringUtils.isEmpty(keystr)'。 – 2015-03-13 15:35:16

0

primatives是不同的問題,但與Java對象,==會只有當對象與自身進行比較時才返回true(相同的內存位置)。對於對象,使用方法equalsComparator接口

+0

感謝您的幫助.. – 2015-03-13 16:00:18

0

==是使用了比較內存位置,這將是對上一些原始數據

字符串是對象,所以比較一下,我們需要使用.equals ()方法 它來自比較器