这是我的代码。当我打印字符串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");
}
}
希望有人可以提供帮助。谢谢!
答案 0 :(得分:7)
尝试:
if(cmd.trim().equalsIgnoreCase("print"))
{
System.out.println("it works");
}
trim()
会删除单词print
周围的任何尾随空格(如果有)。
答案 1 :(得分:2)
你应该修剪它,你可能在字符串之前或之后有空格或换行符。
答案 2 :(得分:1)
使用波纹管修剪并避免可能的nulPointerException
if(cmd!=null && cmd.trim().equalsIgnoreCase("print"))
{
System.out.println("it works");
}
编辑OR
if(cmd!=null && "print".equalsIgnoreCase(cmd.trim()))
{
System.out.println("it works");
}
答案 3 :(得分:1)
String.equals正在运作。
“String.equals
不起作用”综合症的最常见原因是其中一个字符串中存在前导和/或尾随空格而另一个字符串中没有。问题是很容易错过诊断跟踪图中的空白字符。 (我通常在跟踪图中使用字符串值引用,以使任何空格更明显。如果仔细观察,调试器也会显示实际字符。)
另一个更常见的原因是被比较的字符串之一包含的字符看起来像另一个字符串中的相应字符,但事实上并非如此。例如,Unicode希腊语和西里尔语代码页包含外观的字符,如拉丁字母,但实际上是不同的字符。您可以通过重音字符获得类似的问题,因为Unicode支持两种不同的表示方式。
答案 4 :(得分:0)
您是否检查过您的cmd变量是否有空格?