我想将字符串拆分为三部分,并向后打印每个部分。所以当用户输入“HelloWorld”时,它应该打印“dlroWolleH”。我不知道我在哪里错了,它翻转像一对。将字符串拆分为三部分,并将递归应用于翻转:java
import java.util.*;
public class recursion
{
public static void main(String args[])
{
Scanner scanner = new Scanner (System.in);
System.out.print("Enter a string: ");
String str = sc.nextLine();
System.out.print(revRec3(str));
}
public static String revRec3(String str)
{
if ((str.length() == 1)|| (str.length()==0 || str.length()==2))
{
return str;
}
String left = str.substring(0, (str.length()/3)),
middle = str.substring((str.length()/3) ,(str.length()-left.length())),
right = str.substring((str.length()-middle.length()),str.length());
String revLeft = revRec3(left);
String revMiddle = revRec3(middle);
String revRight = revRec3(right);
return revRight + revMiddle + revLeft;
}
}
[什么是调试器以及它如何帮助我诊断问题? ](https://stackoverflow.com/q/25385173/5221149) – Andreas
打印你的分割结果,你会发现你的错误:'HelloWorld'被分割成'Hel','loWo','orld'。哎呀! “世界”中的“o”包含两次。 – Andreas
另外,如果输入长度为2个字符*(并且它将在递归之一中)*,则按原样返回它,而不反转它。哎呀! – Andreas