Java 使用递归的双字符串比较
我在编程II课上遇到了一个问题,遇到了麻烦,我想知道是否有人能帮我 问题要求用户输入字符串,程序将输入字符串反转,然后将反转与原始字符串进行比较,这必须递归完成 到目前为止,我已经:Java 使用递归的双字符串比较,java,Java,我在编程II课上遇到了一个问题,遇到了麻烦,我想知道是否有人能帮我 问题要求用户输入字符串,程序将输入字符串反转,然后将反转与原始字符串进行比较,这必须递归完成 到目前为止,我已经: public class question1 { public static void main(String args[]) { String input = JOptionPane.showInputDialog(null, "Please enter a sentence to determine i
public class question1
{
public static void main(String args[])
{
String input = JOptionPane.showInputDialog(null, "Please enter a sentence to determine if it is a palindrome.");
String backwardsinput = Reverse(input);
System.out.println(backwardsinput);
boolean Palindrome = PalindromeCheck(backwardsinput, input);
if (Palindrome == true)
{
JOptionPane.showMessageDialog(null,"That is a palindrome!");
}
if (Palindrome == false)
{
JOptionPane.showMessageDialog(null,"That is not a palindrome");
}
}
public static String Reverse (String input)
{
if (input.length() <= 1)
return input;
else
{
char x = input.charAt(input.length()-1);
return x+Reverse(input.substring(0,input.length()-1));
}
}
public static boolean PalindromeCheck (String backwardsinput, String input)
{
if(input.length() == 0 || input.length() == 1)
return true;
if(backwardsinput.charAt(0) == input.charAt(input.length()-1))
return PalindromeCheck(backwardsinput.substring(1, backwardsinput.length()-1), input.substring(1, input.length()-1));
else
return false;
}
}
公开课问题1
{
公共静态void main(字符串参数[])
{
String input=JOptionPane.showInputDialog(null,“请输入一个句子以确定它是否是回文”);
字符串后退输入=反向(输入);
系统输出打印LN(后向输入);
布尔回文=回文检查(BackardsInput,input);
if(回文==true)
{
showMessageDialog(null,“这是回文!”);
}
if(回文==false)
{
showMessageDialog(null,“这不是回文”);
}
}
公共静态字符串反转(字符串输入)
{
如果(input.length()您做了两次工作(有点)
应该是
if (backwardsinput.charAt(0) == input.charAt(0))
^
你差点就成功了:-)
还有,另一种表达方式
if (cond)
return something;
else
return false;
是
因此,你的最后一行可以写成
return backwardsinput.charAt(0) == input.charAt(0) &&
palindromeCheck(backwardsinput.substring(1, backwardsinput.length() - 1),
input.substring(1, input.length() - 1));
相关问题/答案:
您正在反转字符串,然后检查字符串是否与此反转匹配。即,它测试字符串是否正确反转
您可以做的是不反转字符串,然后只检查字符串是否与自身相匹配(ratehr大于其反转)
if(backwardsinput.charAt(0) == input.charAt(input.length()-1))
这不起作用。您需要backwardsinput.charAt(0)=input.charAt(0)
,因为您已将其反转
当我调试类似的东西时,我倾向于分离所有的复合语句,所以
if(backwardsinput.charAt(0) == input.charAt(input.length()-1))
将成为
char bc = backwardinput.charAt(0);
char ic = input.charAt(input.length()-1);
System.println(bc);
System.println(ic);
if (bc == ic) {
当我们试图在一个表达式中放入太多的内容时,我们都会犯愚蠢的错误,因此这些都是开始寻找逻辑错误的好地方。最后一点很有帮助,我不知道你可以这样构造返回语句,谢谢!谢谢aiobe,我不知道返回的方式,但现在我想起来,这没有意义,因为这就像一行if-else语句!哪一行没有意义?我的建议?那将是理想的情况!不幸的是,对我来说,问题特别指出我们必须将其反转,并递归地将原始与反转进行比较:(您可以保留它,并将第一个字符与第一个字符进行比较以比较字符串。这种逻辑分解是一个很棒的主意,是发现错误的好方法。谢谢!也许他们应该先教您如何格式化代码,然后转到其他主题。如果您能指出我做错了什么,或者向我介绍一些相关资源,请参阅这件事,我会很感激的。我只是想学习,并尽我所能做好工作。@Bohemian:这不是我见过的最糟糕的格式,只是最上面的部分需要一些工作!还有Eogcloud,我喜欢你的代码,不管格式和错误!:-)
if(backwardsinput.charAt(0) == input.charAt(input.length()-1))
char bc = backwardinput.charAt(0);
char ic = input.charAt(input.length()-1);
System.println(bc);
System.println(ic);
if (bc == ic) {