【发布时间】:2013-03-21 18:42:48
【问题描述】:
我有 2 个列表标记和和弦。他们人口充足。但是当我尝试比较 2 时,尽管在循环中单独打印时打印相同的字符串内容,它们总是会产生错误值。有什么想法/解决方法吗?
System.out.println(token.get(i).toString().equals(chords.get(j).toString()));
两者都声明为List并初始化为ArrayList();
两者都包含字符串对象。
while (i < tokenLength) {
System.out.println("");
int j = 0;
while (j < numberOfChords) {
System.out.println(token.get(i).toString() + " compares "
+ chords.get(j).toString());
System.out.println(token.get(i).toString()
.equals(chords.get(j).toString()));
if (token.get(i).toString() == chords.get(j).toString()
&& token.get(i).toString().length() <= maxLengthOfChord) {
foundChord.add(token.get(i));
}
j++;
}
i++;
}
给出以下输出:
我也试过了
System.out.println(token.get(i).toString().equals(chords.get(j).toString()));
它总是产生一个错误,返回与屏幕截图所示相同的结果
【问题讨论】:
-
请显示两个相同的字符串(不要忘记任何前导/尾随空格等)。
-
还修剪()你的字符串...
-
如果两者都是字符串,那么
toString()调用两者的意义何在。 -
小心你的实际 if 检查
token.get(i).toString() == chords.get(j).toString(),这将比较实际的对象引用而不是值。 -
我建议打印字符串的长度,看看某处是否没有隐藏空间。
标签: java