-1

这是我的代码。当我打印字符串 cmd 时,它会打印出“print”,但是我的 if statemnet 仍然无法运行。这是我的代码:

public static void main(String[] args) throws InterruptedException {
   String url = "http://xboxfl.co/java/inc/command.txt";
  String cmd = Methods.getContents(url, "UTF-8");
  System.out.println(cmd);
  if(cmd.equalsIgnoreCase("print")){
      System.out.println("it works");
  }
}

希望有人可以提供帮助。谢谢!

4

5 回答 5

7

尝试:

if(cmd.trim().equalsIgnoreCase("print"))
{
    System.out.println("it works");
}

trim()删除 word 周围的任何尾随空格print(如果有)。

于 2013-01-05T04:05:17.187 回答
2

你应该修剪它,你的字符串之前或之后可能有空格或换行符。

于 2013-01-05T04:06:14.970 回答
1

String.equals 确实有效。

String.equals“不起作用”综合症的最常见原因是其中一个字符串中有前导和/或尾随空格,而另一个没有。问题是很容易错过诊断跟踪图中的空白字符。(我通常在跟踪打印中的字符串值周围加上引号,以使任何空格更加明显。如果您仔细查看,调试器也会显示实际字符。)

另一个更不常见的原因是,一个被比较的字符串包含的字符看起来像另一个字符串中的对应字符,但实际上并非如此。例如,Unicode 希腊语和西里尔语代码页包含的字符看起来像拉丁字母,但实际上是不同的字符。重音字符也会出现类似问题,因为 Unicode 支持两种不同的表示方式。

于 2013-01-05T04:44:56.917 回答
1

使用波纹管修剪并避免可能的 nulPointerException

if(cmd!=null && cmd.trim().equalsIgnoreCase("print"))
  {
   System.out.println("it works");
  }

编辑或

if(cmd!=null && "print".equalsIgnoreCase(cmd.trim()))
  {
   System.out.println("it works");
  }
于 2013-01-05T04:09:03.080 回答
0

您是否检查过您的 cmd 变量是否有空格?

于 2013-01-05T04:06:26.620 回答