我正在构建一个类,用于检查输入是否包含回文并且仅返回回文项(如果存在)。我已经能够开发以下内容,它编译和运行没有错误,但我没有得到任何回报。
有人能发现我的错误所在吗?
public class Palindrome {
public static boolean isPalindrome(String word) {
String back = word.charAt(word.length() - 1) + "";
for (int i = word.length() - 2; i >= 0; i--) {
back = back + word.charAt(i);
}
if (word == back) {
return true;
}
return false;
}
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
if (isPalindrome(args[i]) == true) {
System.out.println(args[i]);
}
}
}
}
我认为问题在于主要方法,特别是在if语句中,但我不确定为什么它不起作用。
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
if (isPalindrome(args[i]) == true) {
System.out.println(args[i]);
}
}
}
提前感谢您提供的任何帮助。我很感激你的时间!
答案 0 :(得分:1)
借调.equals()错误。
此外,您可以使用内置的字符串撤消程序轻松检查回文:
String a = "sampleelpmas";
String b = new StringBuffer(a).reverse().toString();
a.equals(b); //TRUE
答案 1 :(得分:1)
对于第一部分,您可以使用back = new StringBuilder(word).reverse().toString()
来反转它,这是更清晰的代码,也更优化(也更快但在这里无所谓)。
但是你的问题在于比较字符串,==检查两个对象是否相等,对于2个字符串,这是永远不会的,即使它们和你期望的一样。使用word.equals(back)
,检查字符串的文本内容是否匹配。
答案 2 :(得分:0)
常见错误。比较字符串是错误的。不要使用==
运算符。使用equals()
方法。
将word == back
更改为word.equals(back)
。
休息应该是正确的。
答案 3 :(得分:0)
您不应该使用==来评估字符串相等性,而是使用equals()。
if (word.equals(back))