在我的服務器類的主要方法中,我有一系列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
類。我在這裏錯過了什麼嗎?大概盯着我臉上:/
難道是可能的,你的'keyword'字符串包含尾隨'null'或使'equalsIgnoreCase'無法檢測匹配其他非打印字符? – HeatfanJohn 2012-07-23 01:36:35
嘗試在關鍵字上使用.trim() – Leon 2012-07-23 01:38:11
總是在這種情況下打印值或使用調試器 – 2017-05-29 09:34:22