【发布时间】:2016-01-30 02:48:21
【问题描述】:
我正在尝试构建一个回文查找器类,该类使用 ArrayStack 字符来查找传递给它的任何单词或短语中的回文。但是,当我将回文作为字符串传递给我的代码时,它返回 false。
我已经多次调试我的代码,甚至重写了程序,但我无法弄清楚为什么我的代码不能正常工作。我认为这可能是我在 isPalindrome() 方法、构造函数或实例变量中忽略了一些简单的事情。
public class PalindromeFinder {
ArrayStack<Character> charStack = new ArrayStack<>();
String strVerify = "";
private String strCheck;
public PalindromeFinder(String strCheck) {
strCheck = strCheck.toLowerCase();
pushStr(strCheck);
strVerify = popStr();
}
public void pushStr(String strToPush) {
for (int chVal = 0; chVal <strToPush.length(); ++chVal) {
char ch = strToPush.charAt(chVal);
ch = Character.toLowerCase(ch);
if (Character.isAlphabetic(chVal)) {
charStack.push(ch);
}
}
}
public String popStr() {
while (!charStack.empty()) {
strVerify += charStack.pop();
}
return strVerify;
}
public boolean isPalindrome() {
return strVerify == strCheck;
}
}
以下代码行在我的程序的 main 方法中返回 false:
PalindromeFinder p = new PalindromeFinder("mom"); System.out.println(p.isPalindrome());
对我的代码的任何帮助或改进将不胜感激。
【问题讨论】:
-
return strVerify.equals(strCheck);....字符串是对象而不是变量,因此您可以按照自己的方式比较地址
-
对我来说仍然返回 false,我刚刚尝试过。
-
返回 strVerify.equalsIgnoreCase(strCheck); ?
-
仍然不起作用,它必须是未返回正确结果的变量之一。
-
然后只需给出 vie system.out.println() 两个字符串中的内容;)
标签: java oop methods constructor instance-variables