[英]Same string not equals
我在代码的以下部分中,粒度的值是块。 当我比较这些值时,它始终显示为“否”。
System.out.println(granularity);
System.out.println(granularity.equalsIgnoreCase("block")?"YES":"NO");
if(granularity.equalsIgnoreCase("BLOCK")){.....
这是代码的输出:
block
NO
粒度值从属性文件中获取为
granularity = prop.getProperty("Granularity");
这是属性文件的快照:
.....Granularity = block
......
有人可以解释为什么两个字符串不相等吗?
空格可能会使比较混乱。 在开始时执行此操作:
granularity = granularity.trim();
属性文件中的属性的值紧接在=
所以这:
Granularity = block
导致值" block"
。 将文件更改为:
Granularity=block
这是代码的输出:
否
如果仔细检查您的输出,则会在单词block后找到空白,因此它是 @ pj-meisch评论后编辑 "block "
。
您从输入中得到" block"
。 当您将其与"block"
进行比较时,您会得到错误的结果。
添加此行granularity = granularity.trim()
。
最佳做法是每次在代码中trim
字符串,尤其是当它被用户输入时。
granularity.trim().equalsIgnoreCase("block")...
或以granularity
存储时
String granularity = someInputString.trim();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.