2

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

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

4

3 回答 3

7

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

于 2012-07-23T01:37:57.207 回答
6

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

尝试在顶部添加此语句:

keyword = keyword.trim();
于 2012-07-23T01:38:21.683 回答
0

另请参阅整理者

Collat​​or 类执行对区域设置敏感的字符串比较。您可以使用此类为自然语言文本构建搜索和排序例程。

于 2017-05-29T09:31:38.557 回答