问题
I'm working on a palindrome detector. I've already managed to make it work in some cases. When I type in a word like "Abba" it comes back as a palindrome. Great! But it doesn't do the same thing if I enter "cat". I can't use loops for this. Any ideas?
public class Palindrome {
public static void main(String[]args) {
Scanner in=new Scanner(System.in);
System.out.print("Enter word");
String start = in.nextLine();
String end=start;
boolean isPalindrome = (start == end);
if (isPalindrome) {
System.out.print("This is a palindrome");}
else
System.out.print("This is not a palindrome");
}
}
回答1:
start==end always compares the same string. If the input is "cat", it checks if "cat"=="cat" which is true.
Use recursion if you are not allowed to use loops:
String input=in.nextLine();
isPalindrome(0,start.length()-1,input);
boolean isPalindrome(left,right,input){
if (left>=right){
// left==right for odd palindrome
// left>right for even palindrome
return true;
}
if (str.charAt(left)!=str.charAt(right)){
return false;
}
return isPalindrome(left+1,right-1,str);
}
来源:https://stackoverflow.com/questions/52415524/simple-palindrome-detector