我正在尝试构建一个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());
我非常感谢对我的代码提供任何帮助或改进。
答案 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);
}