Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.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_Arrays_Recursion - Fatal编程技术网

java递归地反转字符数组

java递归地反转字符数组,java,arrays,recursion,Java,Arrays,Recursion,我正在努力解决一个问题,这个问题要求我使用递归帮助函数在Java中反转字符数组。我能够相当容易地反转整数数组,但当我运行此代码试图反转字符数组时,我不断遇到溢出错误: public static void reverseArray (char[] a) { reverseArrayHelper(a, 0, a.length-1); } public static void reverseArrayHelper(char[] a, int lower, int upper) {

我正在努力解决一个问题,这个问题要求我使用递归帮助函数在Java中反转字符数组。我能够相当容易地反转整数数组,但当我运行此代码试图反转字符数组时,我不断遇到溢出错误:

public static void reverseArray (char[] a) {
    reverseArrayHelper(a, 0, a.length-1);
}

public static void reverseArrayHelper(char[] a, int lower, int upper) {
    char temp = 'a';
    if(lower < upper) {
        temp = a[lower];
        a[lower]=a[upper];
        a[upper]=temp;
        reverseArrayHelper(a, lower++, upper--);
    }
}
publicstaticvoidreversearlay(char[]a){
反向arrayHelper(a,0,a.length-1);
}
公共静态void reversearlayhelper(字符[]a,整数下限,整数上限){
字符温度='a';
if(下部<上部){
温度=a[较低];
a[下]=a[上];
a[上限]=温度;
reverseArrayHelper(a,下++,上--);
}
}

如果有人能帮助我理解我在这段代码中的错误,我将不胜感激

使用
lower+1
upper-1
代替
lower++
upper-1
。或者,您可以使用
++lower
--upper
。后缀增量和减量运算符首先分配值,然后更改值,即有效地,您每次都将相同的
lower
upper
值传递给
reversearlayhelper

演示:

public class Main {
    public static void main(String[] args) {
        // Test
        char[] chars = { 'a', 'b', 'c', 'd', 'e' };
        reverseArray(chars);
        System.out.println(new String(chars));
    }

    public static void reverseArray(char[] a) {
        reverseArrayHelper(a, 0, a.length - 1);
    }

    public static void reverseArrayHelper(char[] a, int lower, int upper) {
        char temp;
        if (lower < upper) {
            temp = a[lower];
            a[lower] = a[upper];
            a[upper] = temp;
            reverseArrayHelper(a, lower + 1, upper - 1);
        }
    }
}
edcba
公共类HelloWorld{
公共静态void main(字符串[]args){
char[]charArray={'a','e','d','c','b'};
反向耳环(charArray);
}       
公共静态void reversearlay(字符[]a){
反向arrayHelper(a,0,a.length-1);
}
公共静态void reversearlayhelper(char[]a,int-lower,int-upper){
if(下部<上部){
字符温度=a[较低];
a[下]=a[上];
a[上限]=温度;
反转辅助线(a,++下,--上);
}   
系统输出打印(a);
}
}

您需要将
++
/
--
放在变量前面。
  public class HelloWorld{

 public static void main(String []args){        
    char[] charArray = {'a','e','d','c','b'};
     reverseArray(charArray);
 }       
  public static void reverseArray (char[] a) {
        reverseArrayHelper(a, 0, a.length-1);
 }
  public static void reverseArrayHelper(char[] a, int lower, int upper) { 
   if(lower < upper) {
   char temp = a[lower];
    a[lower]=a[upper];
    a[upper]=temp;
    reverseArrayHelper(a, ++lower, --upper);
}   
System.out.print(a);
}
}