为什么我的代码在两个相等字符串之间的检查中返回false?

时间:2015-10-29 19:31:50

标签: java oop methods constructor instance-variables

我正在尝试构建一个Palindrome finder类,它使用ArrayStack字符来查找传递给它的任何单词或短语中的回文。但是,当我将回文作为字符串传递给我的代码时,它返回false。

我已经多次调试了我的代码,甚至编写了程序,但我无法弄清楚为什么我的代码无法正常工作。我认为这可能是我在isPalindrome()方法,构造函数或实例变量中忽略的一些简单。

starHalf : '<%= image_path('star-half-big.png') %>',
starOff  : '<%= image_path('star-off-big.png') %>',
starOn   : '<%= image_path('star-on-big.png') %>'

以下代码行在我的程序的main方法中返回false:

PalindromeFinder p =新PalindromeFinder(“妈妈”); 的System.out.println(p.isPalindrome());

我非常感谢对我的代码提供任何帮助或改进。

2 个答案:

答案 0 :(得分:1)

PalindromeFinder构造函数中,您从未将strCheck参数分配给strCheck字段,因此当您比较isPalindrome中的字段时,它仍然具有默认值, null。你需要在构造函数中使用这一行:

this.strCheck = strCheck;

考虑将字段声明为final

private final String strCheck;

这对于像这样的领域有一些小的好处,在施工后不会改变。其中一个好处是,如果任何构造函数忘记初始化字段,编译器会对你大喊大叫,因此它会捕获此错误并避免混淆。

您还需要与equals进行后续字符串比较,而不是==

return strVerify.equals(strCheck);

P.S。 PalindromeFinder并不一定需要成为一个班级。它作为单个静态实用程序方法isPalindrome(String s)会更简单,但是anyhoo。

答案 1 :(得分:0)

您必须将Java中的字符串与equals()方法进行比较。

你的方法isPalindrome应该是这样的:

public boolean isPalindrome() {
    return strVerify.equals(strCheck);
}