如何在 Java 中以相反的顺序创建一个字符数组?

How do I create an array of chars in reverse order in Java?

我尝试了以下方法,但总是收到错误消息。 (“线程“主”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:10”)

public class rechner2 {
    static String a = "7289347928";

    
    public static void main(String[] args) {
        for (int i = 0; i < a.length(); i++) {
            System.out.println(langeZahl(a)[i]);
        }
    }
    
    
    private static char[] langeZahl(String a) {
         if (a == null) {
             return null;
         }

         int len = a.length();
         char[] array = new char[len];
         for (int i = 0; i <= len; i++) {
             array[i] = a.charAt(a.length() - i);
         }
         return array;
    }
}

我不明白。

数组在长度为 1 的索引处结束。如果你想这样做,你需要在你创建反向数组的地方说:

array[i] = a.charAt(a.length() - i - 1);

它正在尝试获取位于 a[a.length] 的角色
这是不可能的,因为索引来自 0 -> length-1

你的错误在你的for.在你第一次使用 i < a.length() 但在你第二次使用 i <= len 并且你将需要另一个 'counter' 来保持 'a' 数组的位置你正在获取字符从。固定代码将是这个:

静态字符串 a = "7289347928";

public static void main(String[] args) {
    for (int i = 0; i < a.length(); i++) 
    {
        System.out.println(langeZahl(a)[i]);
    }
}


private static char[] langeZahl(String a) {
     if (a == null) {
         return null;
     }

     int len = a.length();
     int j = len-1;
     char[] array = new char[len];
     for (int i = 0; i < len; i++) {
         array[i] = a.charAt(j);
         j--;
     }
     
     return array;
}