我有一个关于我正在写的基本程序的问题,说赛车这样的词是否是回文。
我的所有反转字符串的方法,剥去标点符号的工作,但确定它是否是回文的那个方法不会。
/**
* Determines if a series of letters makes a palinedrome
*
* @param str All punctuation and spaces have been removed
* before this method is called.
* @return true if phrase is a palindrome,
* false otherwise.
*/
public boolean isPalindrome(String str)
{
String d = reverseString (str);
return( str.equals (reverseString (str) ) );
}
答案 0 :(得分:6)
好的,我不确定d
在你的函数中的用途是什么,因为它从未使用过,但如果你想看看为什么你的函数不起作用,只需添加调试代码:
public boolean isPalindrome (String str) {
System.out.println ("DEBUG: original string = '" + str + "'");
System.out.println ("DEBUG: reverse string = '" + reverseString (str) + "'");
if (str.equals (reverseString (str)))
System.out.println ("DEBUG: returning true");
else
System.out.println ("DEBUG: returning false");
return str.equals (reverseString (str));
}
我敢打赌你的reverseString
功能有问题(但不是很多钱)。这些调试语句应该足以找出问题所在。
答案 1 :(得分:5)
如果string reverseString(String string)
,并删除了所有空格,那么检查是否有什么是回文应
public boolean isPalindrome(String string)
{
return string.equals(reverseString(string));
}
当然这是区分大小写的,所以如果你的回文定义不关心套管,那么请改用equalsIgnoreCase。
如果这不起作用,那么您可能需要再次检查剥离和反向字符串方法。
答案 2 :(得分:0)
您的问题是您未显示的反向字符串方法。如果该方法正常工作,那么isPalindrome方法应该可行。您需要做的就是修复反向字符串方法。
Java没有本机反向字符串方法,我强烈建议您自己编写。
但是,Java确实为StringBuffer和StringBuilder提供了反向方法。 StringBuilder比StringBuffer更受欢迎。使用equals方法将反向字符串与原始字符串进行比较
答案 3 :(得分:0)
代码应该是这样的:
String d = reverseString (str);
return( str.equals (d) );
您不必再调用两次reverseString()
P.S。:StringBuffer有一个反转String的方法。
答案 4 :(得分:0)
我确定你现在已经提交了你的作业,但我正在学习java并需要练习,所以这里是我的代码。它使用一个char数组并反转它。我认为最好的方法是使用StringBuilder,但你的作业的意图可能是学会自己做:
public class reverseString {
public static void main(String[] args) {
System.out.println("racecar is a palindrome: "+ isPalindrome("racecar"));
}
public static boolean isPalindrome(String str)
{
String d = reverseString (str);
return( str.equals (reverseString (str) ) );
}
private static char[] reverse(char[] input) {
int length = input.length;
char[] reversed = new char[length];
for (int i=0;i<length;i++) {
reversed[length-i-1]=input[i];
}
return reversed;
}
private static String reverseString(String input){
String reversed = new String(reverse(input.toCharArray()));
return reversed;
}
}
输出:
racecar is a palindrome: true
如果有人对我的代码糟糕的原因有任何评论,那就开火了。我很感激任何建设性的批评。