【问题标题】:Why is String equality not working?为什么字符串相等不起作用?
【发布时间】:2014-05-02 06:27:23
【问题描述】:

我想测试这两个字符串是否相同,但我不确定我在哪里做错了。可能是因为 HashMap 吗?我怎样才能使这个“如果”工作?由于声誉问题,我无法添加它的任何图像![调试模式显示 val[0] -->> "000" (**id=52)****

private static String convert (final String s) {
    String temp = s;        
    final Iterator<String[]> sic = sections.iterator();
    while (sic.hasNext()) {
        final String[] val = sic.next();
        String a=val[0]; String b="000"; //val[0] is 000 and showed as "000" in debug mode as well.
        if(a.equals(b)){  //this must give a true
         val[0]="1003" ;} 

        temp = temp.replaceAll("\n(" + val[1] + ")\r?\n--*\r?\n",  val[0].length()>0 ? "\n\u25b4\u25ba"+val[0]+"\n$1\n": "\n\n\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
    }

    return (temp + "\u25b4").replaceAll("\u25ba212(\n" + ratioRam +"\u25b4)","\u25ba222$1"); 
}

编辑:我认为部分在这里并不重要,因为我们知道这部分的价值。如果部分很重要,那么 Adding synonym words different code numbers - java 。同样在调试模式中有 hash , hash32, value 和 in 值 for [0]--> 0, for [1]--> 0, for [2]--- > 0

【问题讨论】:

  • 他们不完全是equal,我认为一定有一些你不考虑的空间
  • 顺便说一句,你怎么知道if 块没有被执行?它所做的只是创建一个从未使用过的字符串对象。
  • @yshavit 我知道是因为在调试模式下它不会创建任何名为 i 的变量
  • 好的。您能否确认每个字符串的char[] 是否相同? string.toCharArray()。也可能是您的调试器从不显示 i 变量,因为它一创建就超出范围。也就是说,如果调试器在String i =... 行上,那么i 还不存在。然后你前进一行,i 已经超出范围了。
  • 如有疑问,请打印一份声明。如果打印i,则不允许编译器删除该语句。

标签: java string debugging hashmap equality


【解决方案1】:

试试

String a=val[0]; //Ensure value is 000 not OOO 
a = a.replaceAll("[\n\r]", "");
if(a.trim().equals(b.trim())){
 //toDO
}

【讨论】:

  • 这是随机猜测。它甚至可能是正确的......但我们需要更好地理解“部分”首先是什么。 “猜测”是“坏”。恕我直言...
  • @IwishIcouldthinkofagood 如果你的意思是一回事,为什么要说另一个?
猜你喜欢
  • 2019-05-20
  • 2017-07-31
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多