【发布时间】: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