你好我使用2种不同的方法检查一个单词,如果它是一个回文或者不是.. 1种方法是硬编码的(这可以按预期工作)而另一种方法我使用Stringbuilder但是我总是得到真实而且从不作为输出错误。我不明白为什么它不工作时没有硬编码...这是我用于测试的代码。 (评论的变量工作)
public static void main(String[] args) {
StringBuilder a = new StringBuilder("did");
StringBuilder b = a.reverse();
// String a = "did";
// String b = "dad";
if(b.equals(a)) {
System.out.println("true");
}
else {
System.out.println("false");
}
System.out.println(b);
}
答案 0 :(得分:9)
因为,StringBuilder#reverse
确实可以实现逆转。因此,a.reverse()
也会更改a
的值。
您可以创建StringBuilder
的副本。
StringBuilder a = new StringBuilder("did");
StringBuilder b = new StringBuilder(a);
if (b.toString().equals(a.reverse().toString())) {
System.out.println("true");
} else {
System.out.println("false");
}
您需要使用toString()
来比较内容。在StringBuilder实例上使用equals
将比较references
。