相同的字符串不等于

Same string not equals

我有以下部分代码,其中粒度的值为块。当我比较这些值时,它总是显示 NO.

   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

Here is the output for the code:

block NO

如果你仔细检查你的输出,你会发现在字块后面有白色 space,所以它是 "block ". 在@p-j-meisch 评论后编辑
您从输入中得到 " block"。当您将它与 "block" 进行比较时,您会得到错误。

添加这一行 granularity = granularity.trim().

最佳做法是每次在代码中使用 trim 个字符串,尤其是当它被用作用户的输入时。

granularity.trim().equalsIgnoreCase("block")...

或将其存储在 granularity

String granularity = someInputString.trim();