Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在递归字符串中向左移动数字_Java_Recursion - Fatal编程技术网

Java 在递归字符串中向左移动数字

Java 在递归字符串中向左移动数字,java,recursion,Java,Recursion,任务是使用递归将字符串中的数字移到字符串的开头。字符串中始终只包含一个数字。因此,如果我将“ba3nana”输入代码,它应该返回“3banana”。已经做了一些递归任务,但这一个我被卡住了。我试过,我猜已经有50种不同的组合,但到目前为止,我的代码只返回“banana3”,所以我用我的数字反其道而行之。我知道这段代码将每个数字向右移动,但仍然无法计算出正确的组合,以获得左侧数字的输出。如果我改变一切,一切都会颠倒,变成“3ananab” 方法的调用如下所示: System.out.println

任务是使用递归将字符串中的数字移到字符串的开头。字符串中始终只包含一个数字。因此,如果我将“ba3nana”输入代码,它应该返回“3banana”。已经做了一些递归任务,但这一个我被卡住了。我试过,我猜已经有50种不同的组合,但到目前为止,我的代码只返回“banana3”,所以我用我的数字反其道而行之。我知道这段代码将每个数字向右移动,但仍然无法计算出正确的组合,以获得左侧数字的输出。如果我改变一切,一切都会颠倒,变成“3ananab”

方法的调用如下所示:

System.out.println(shiftDigitLeft("ba3nana"));
这是迄今为止返回banana3的代码:

private static String shiftDigitLeft(String text) {
        if (text.isEmpty()) {
            return text;
        } else {
            if (text.charAt(0) >= '\u0030' && text.charAt(0) <= '\u0039') {
                return shiftDigitLeft(text.substring(1)) + text.charAt(0);
            } else {
                return text.charAt(0) + shiftDigitLeft(text.substring(1));
            }
        }
    }
私有静态字符串shiftDigitLeft(字符串文本){
if(text.isEmpty()){
返回文本;
}否则{

如果(text.charAt(0)>='\u0030'&&text.charAt(0)执行相同操作,但从最后一个字符开始并向后移动:

private static String shiftDigitLeft(String text) {
    if (text.isEmpty()) {
        return text;
    } else {
        if (text.charAt(text.length() - 1) >= '\u0030' && text.charAt(text.length() - 1) <= '\u0039') {
            return text.charAt(text.length() - 1) + shiftDigitLeft(text.substring(0, text.length() - 1));
        } else {
            return shiftDigitLeft(text.substring(0, text.length() - 1)) + text.charAt(text.length() - 1);
        }
    }
}
私有静态字符串shiftDigitLeft(字符串文本){
if(text.isEmpty()){
返回文本;
}否则{

如果(text.charAt(text.length()-1)>='\u0030'&&text.charAt(text.length()-1)非常感谢!现在看到它让我明白我做错了什么,但肯定我需要更多的时间才能得到这个结果。