2013-01-05 79 views
-1

这是我的代码。当我打印字符串cmd时,它打印出“打印”,但是,如果statemnet仍然不能运行。这里是我的代码:Java string.equals if statement not working

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"); 
    } 
} 

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

+0

如果将cmd更改为cmd =“print”,它可以正常工作,什么是方法?你能否提供methods.getContents的代码) – Mark

+0

什么是'Methods.getContents'?那是哪里? – Coffee

+0

如果你运行上面的src,你的代码的输出是什么? – Jayamohan

回答

7

尝试:

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

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

+0

接缝工作。谢谢! – user1947236

2

你应该修剪它,这可能是你的字符串之前或之后你有空间或新线charachter。

0

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

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"); 
    } 
+0

+1你以前的版本比较简单;)'“print”.equalsIgnoreCase(cmd.trim())''。 –

+0

嗯,但不得不检查命令是空的,因为cmd.trim()可以抛出NPE – Suranga

+0

啊,你是对的! –

1

String.equals确实工作。

String.equals不起作用”的最常见原因是其中一个字符串中存在前导空格和/或尾随空格,而另一个字符串中没有空格。问题是很容易错过诊断跟踪打印中的空白字符。 (我通常在traceprints中引入字符串值来引起任何空白,如果仔细观察,调试器也会显示实际字符)。

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