Java string.equals if语句不起作用
这是我的密码。当我打印字符串cmd时,它会打印出“print”,但是if statemnet仍然不会运行。这是我的密码:Java string.equals if语句不起作用,java,string,Java,String,这是我的密码。当我打印字符串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.
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");
}
}
希望有人能帮忙。谢谢 试试看:
if(cmd.trim().equalsIgnoreCase("print"))
{
System.out.println("it works");
}
trim()
删除单词print
周围的任何尾随空格,如果有的话。您应该对其进行修剪,您的字符串前后可能有空格或新行字符。是否检查了cmd变量是否有空格?使用下面的命令进行修剪,以避免可能出现的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");
}
String.equals确实有效 “
String.equals
不起作用”综合征最常见的原因是其中一个字符串中有前导和/或尾随空格,而另一个字符串中没有。问题是在诊断traceprint中很容易漏掉空白字符。(我通常在traceprints中的字符串值周围加引号,以使任何空白更为明显。如果仔细查看,调试器也会显示实际字符。)
另一个更不常见的原因是,正在比较的一个字符串包含的字符看起来与另一个字符串中的对应字符相似,但实际上并非如此。例如,Unicode希腊语和西里尔语代码页包含看起来像拉丁字母的字符,但实际上是不同的字符。由于Unicode支持两种不同的表示重音字符的方法,因此您可能会遇到类似的问题。如果将cmd更改为cmd=“print”,效果很好,那么什么是方法?你能提供methods.getContents的代码吗?什么是
methods.getContents
?这在哪里?如果运行上面的src,代码的输出是什么?我向您保证Java工作得非常好。cmd
中的任何内容都不是“打印”。+1您以前的版本更简单;)<代码>“print”.equalsIgnoreCase(cmd.trim()).Hmm但是必须检查cmd是否为null,因为cmd.trim()可以抛出NPEThat seamed来工作。非常感谢。