2012-07-23 101 views
1

在我的服務器類的主要方法中,我有一系列if語句用於聊天程序的保留關鍵字,我試圖使用變量的值以及.equalsIgnoreCase方法。問題是,即使我的變量保持一定的值,但在執行程序時,即使變量與if條件之一之間存在完全匹配,代碼也總是進入else子句。代碼編譯得很好,但我不知道爲什麼會發生這種情況。在開始if語句之前,我已經打印了變量的值,以驗證它是否保持了正確的值。從我的代碼Snipet如下所示:JAVA .equalsIgnoreCase不工作

System.out.println("Keyword is : " + keyword); 
if (keyword.equalsIgnoreCase("who")) 
{ 
    System.out.println("calling who function"); 
    whoFunction(address, socket, port); 
} 
else if (keyword.equalsIgnoreCase("whoami")) 
{ 
    whoami(address, socket, port, clientAddress); 
} 
else if (keyword.equalsIgnoreCase("all")) 
{ 
    all(message); 
} 
else if (keyword.equalsIgnoreCase("Bye")) 
{ 
    bye(address, socket, port, clientAddress); 
} 
else 
{  
    newUser(keyword, address, searchListLength, clientAddress, port); 
} 

無論關鍵字的值是什麼,它總是訴諸於選擇最後的else語句。正如你可以看到這將導致我總是打電話給我的newUser類。我在這裏錯過了什麼嗎?大概盯着我臉上:/

+0

難道是可能的,你的'keyword'字符串包含尾隨'null'或使'equalsIgnoreCase'無法檢測匹配其他非打印字符? – HeatfanJohn 2012-07-23 01:36:35

+1

嘗試在關鍵字上使用.trim() – Leon 2012-07-23 01:38:11

+0

總是在這種情況下打印值或使用調試器 – 2017-05-29 09:34:22

回答

7

你確定字符串keyword不包含任何尾隨換行符/空格或其他非打印字符?

2

您的輸入中可能有前導/後續空格,這會導致不匹配。

嘗試在頂部添加以下語句:

keyword = keyword.trim();