public class Lab3Exercises {
public static void main(String[] args){
Scanner s = new Scanner([System.in](https://System.in));
System.out.println("Please enter a word to check if it is a palindrome");
String myP = [s.next](https://s.next)();
System.out.println(palindrome(myP));
}
public static boolean palindrome(String p){
String myWord = p;
String reverseWord = "";
int i = 1;
while (i < myWord.length()){
reverseWord = myWord.charAt(i) + myWord.substring(0, i) + myWord.substring((i + 1), myWord.length());
i++;
}
if (reverseWord.equals(myWord)) {
return true;
}
else{
return false;
}
}
我检查了一下,reverseWord与myWord完全相同,但是每次都会返回false。我尝试过汉娜,赛车等,它们都返回false
答案 0 :(得分:0)
您的情况不正确,因为构建反词的方式是错误的。
i
开头等于0
reverseWord
重新分配了一个新值以下是一个好的解决方案(您编写代码:))
reverseWord
reverseWord
上,而不是复杂操作的结果答案 1 :(得分:0)
让我们从简单的示例开始。
p
的长度为1,例如s
(回文),则将reverseWord
设置为空字符串。由于i
从1开始,它不小于长度,因此循环不会运行。由于空字符串不等于s
,因此该方法返回false。tt
(另一个回文)。您在循环中运行了一次,将reverseWord
设置为"t" + "t" + ""
= "tt"
。在这种情况下,该方法正确返回true。obo
:首先将reverseWord
设置为boo
,然后将"oob"
("o" + "ob" + ""
)设置为第一个值。我认为您需要再次考虑自己的逻辑。
提示:学习使用调试器。
答案 2 :(得分:-1)
因此,while循环从头开始读取字符串以开始索引并存储。
public static boolean palindrome(String p){
String reverseWord = "";
int i = p.length() - 1;
while (i >= 0){
reverseWord += p.charAt(i);
i--;
}
if (reverseWord.equals(p)) {
return true;
}
return false;
}