JAVA .equalsIgnoreCase无效

时间:2012-07-23 01:27:24

标签: java if-statement conditional-statements

在我的服务器类的主要方法中,我对聊天程序的保留关键字有一系列if语句,我尝试使用变量的值和.equalsIgnoreCase方法进行遍历。问题在于,即使我的变量保持某个值,但在执行程序时,即使变量与else条件之一存在完全匹配,代码也始终会进入if子句。代码编译得很好,但我无法弄清楚为什么会发生这种情况。我在开始if语句之前打印了变量的值,以验证它是否保持正确的值。我的代码中的snipet如下所示:

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类。我在这里错过了什么吗?可能会盯着我的脸:/

3 个答案:

答案 0 :(得分:7)

你确定字符串keyword不包含任何尾随的换行符/空格或其他不可打印的字符吗?

答案 1 :(得分:2)

输入中可能有前导/尾随空格,这会导致不匹配。

尝试在顶部添加此语句:

keyword = keyword.trim();

答案 2 :(得分:0)

另见Collat​​or

  

Collat​​or类执行区分区域敏感的String比较。您   使用这个类来构建自然的搜索和排序例程   语言文本。