Java 需要帮助修复以下代码的arrayoutofboundary异常吗

Java 需要帮助修复以下代码的arrayoutofboundary异常吗,java,arrays,exception,Java,Arrays,Exception,如何修复以下代码的arrayOutOfBoundException错误消息。这对我来说似乎在逻辑上是正确的。但我不确定为什么会出现这个错误。需要帮忙吗 public class list { public String reverseStr(String input){ String reverString = input; int j=0; Character rev[] = new Character[reverString.le

如何修复以下代码的arrayOutOfBoundException错误消息。这对我来说似乎在逻辑上是正确的。但我不确定为什么会出现这个错误。需要帮忙吗

public class list  {

    public String reverseStr(String input){
        String reverString = input;
        int j=0;

        Character rev[] = new Character[reverString.length()-1];

        for(int i= reverString.length()-1;i> 0; --i){

            for(j = 0;j<= reverString.length()-1; ++j){
             rev[j] = reverString.charAt(i);
            }

        }
        String output = String.valueOf(rev[j]);
        return output;
    }

    public static void main(String args[]){
        String reverse = "Ambika";
        list li = new list();
        System.out.println("The reverse of " + reverse + " is " + li.reverseStr(reverse));
    }
}
公共类列表{
公共字符串反转(字符串输入){
字符串反转字符串=输入;
int j=0;
字符版本[]=新字符[ReversString.length()-1];
对于(int i=reversString.length()-1;i>0;--i){

对于(j=0;j当内部for循环中断时,j将超出数组边界。 在
String output=String.valueOf(rev[j]);

在旁注中,您应该使
rev
数组足够大,以使整个字符串都有孔

  Character rev[] = new Character[reverString.length()];
(j=0;j)的

hsoJ


您初始化了
rev
,大小小于
reverString

 Character rev[] = new Character[reverString.length()-1];
换成

Character rev[] = new Character[reverString.length()];
实际上,你的嵌套for循环的整个想法是一团糟

public class list {

    public String reverseStr(String input) {
        String reverString = input;
        int j = 0;

        char rev[] = new char[reverString.length()];

        for (int i = reverString.length() - 1; i >= 0; --i) {

            rev[j++] = reverString.charAt(i);
        }

        String output = new String(rev);
        return output;
    }

    public static void main(String args[]) {
        String reverse = "Ambika";
        list li = new list();
        System.out.println("The reverse of " + reverse + " is "
                + li.reverseStr(reverse));
    }
}

你的资料里有很多问题

  • 您正在定义一个长度小于实际大小的数组

    Character rev[]=新字符[reverString.length()-1];

    应该是,

    Character rev[]=新字符[reverString.length()-1];

  • 使用索引打印值

    String输出=String.valueOf(rev[j]);

    您可以使用for循环打印

    for(字符c:rev)
    系统输出打印(c);

  • 您不需要两个循环。一个循环就足够了,如下所示

    int j=0;
    for(int i=reversString.length()-1;i>=0;--i){
    rev[j]=反向字符串字符(i);
    j++;
    }

  • 最后,您不需要单独的数组来保存结果。您可以将结果保存在
    字符串
    StringBuilder


  • 我在你的节目中注意到了几件事。 1.反转字符串不需要两个循环,可以使用一个循环进行遍历,并增加j的值进行移动

    int j=0;     
    for(int i= reverString.length()-1;i>= 0; --i){           
                 rev[j++] = reverString.charAt(i);
            }
    
  • 第二,如果你注意到上面的循环,你会发现它实际上被调用了6次,i的值是(5,4,3,2,1,0),所以你需要一个大小为6的数组,这意味着rev的大小应该是6,这是reverString.length() 请参考下面的代码

    public class List  {
    public String reverseStr(String input){
        String reverString = input;
        int j=0;
        char rev[] = new char[reverString.length()-1];
        for(int i= reverString.length()-1;i>= 0; --i){           
             rev[j++] = reverString.charAt(i);
        }
        String output =String.valueOf(rev);
        return output;
    }
    public static void main(String args[]){
        String reverse = "Ambika";
        List li = new List();
        System.out.println("The reverse of " + reverse + " is " + li.reverseStr(reverse));
    }
    
    }


  • 给出完整的stackstrace。您不指定行号。这不是一个益智网站。@OldProgrammer
    String output=String.valueOf(rev[j])
    该行嵌套for循环将替换重复的字符,而不提供反向字符串。请检查该行,它不会回答问题question@Tyler,这很公平,但如果它被用于生产产品中,就没有理由推出自己的产品,因为您不知道一个优雅的解决方案。
    public class list {
    
        public String reverseStr(String input) {
            String reverString = input;
            int j = 0;
    
            char rev[] = new char[reverString.length()];
    
            for (int i = reverString.length() - 1; i >= 0; --i) {
    
                rev[j++] = reverString.charAt(i);
            }
    
            String output = new String(rev);
            return output;
        }
    
        public static void main(String args[]) {
            String reverse = "Ambika";
            list li = new list();
            System.out.println("The reverse of " + reverse + " is "
                    + li.reverseStr(reverse));
        }
    }
    
    int j=0;     
    for(int i= reverString.length()-1;i>= 0; --i){           
                 rev[j++] = reverString.charAt(i);
            }
    
    public class List  {
    public String reverseStr(String input){
        String reverString = input;
        int j=0;
        char rev[] = new char[reverString.length()-1];
        for(int i= reverString.length()-1;i>= 0; --i){           
             rev[j++] = reverString.charAt(i);
        }
        String output =String.valueOf(rev);
        return output;
    }
    public static void main(String args[]){
        String reverse = "Ambika";
        List li = new List();
        System.out.println("The reverse of " + reverse + " is " + li.reverseStr(reverse));
    }