java中的六维字符串数组

java中的六维字符串数组,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我正在用java编写一个第六维字符串数组,在手动填充第四维数组之后,我想使用array.fill()来节省时间和繁琐的工作。我尝试过许多在线“解决方案”以及for/enhanced for循环,但都没有成功。我一直收到异常3130(线程“main”java.lang.ArrayStoreException:java.lang.String中的异常)。任何帮助或见解都将不胜感激 谢谢,, 埃德 这是我的密码: 字符串颜色[][][]]=新字符串[4][4][4][4][4] for (St

我正在用java编写一个第六维字符串数组,在手动填充第四维数组之后,我想使用array.fill()来节省时间和繁琐的工作。我尝试过许多在线“解决方案”以及for/enhanced for循环,但都没有成功。我一直收到异常3130(线程“main”java.lang.ArrayStoreException:java.lang.String中的异常)。任何帮助或见解都将不胜感激

谢谢,, 埃德

这是我的密码:

字符串颜色[][][]]=新字符串[4][4][4][4][4]

    for (String[][][][][] Red : colors) {
        Arrays.fill(Red, (String) "Red");
        for (String[][][][][] Blue : colors) {
            Arrays.fill(Blue, (String) "Blue");
            for (String[][][][][] Green : colors) {
                Arrays.fill(Green, (String) "Green");
                for (String[][][][][] Yellow : colors) {
                    Arrays.fill(Yellow, (String) "Yellow");
                }
                for (String[][][][][] Orange : colors) {
                    Arrays.fill(Orange, (String) "Orange");
                }
                for (String[][][][][] White : colors) {
                    Arrays.fill(White, (String) "White");
                }

该类型的异常将被抛出到

指示试图将错误类型的对象存储到对象数组中

(摘自)

要理解原因,首先必须考虑代码的含义

String[][]
是包含包含字符串的数组的数组的数组数组。所以,是的

当您使用增强的for循环迭代
颜色
时,将去掉最左边的层,
红色
包含一个5维字符串数组,即包含一个数组的数组包含一个包含字符串的数组。但是
array.fill
不会为您除去外层,而是尝试用字符串填充最顶层,即包含四维数组的数组。这导致了例外

相反,您需要做的是一层接一层地展开数组,并填充实际字符串数组,如下所示:

    String colors[][][][][][] = new String[4][4][4][4][4][4];

    for(String[][][][][] layer1 : colors){ // Iterates over all 5D arrays in colors
        for (String[][][][] layer2 : layer1){ //Iterates over all 4D arrays in the 5D arrays
            for (String[][][] layer3 : layer2){ // 3D
                for (String[][] layer4 : layer3){ // 2D
                    for (String[] actualArray : layer4){ //actual string arrays
                        Arrays.fill(actualArray, "something"); 
                    }
                }
            }
        }
    }

因此,在这里,您将迭代所有5D数组,迭代每个数组中的所有4D数组,等等。直到您最终使用“arrays.fill”字符串填充1D数组,您可能应该改进您的问题,比如添加您编写的实际代码。你可以在我的道歉中读到更多关于提出更好问题的内容。在这里。我更新了我的答案。但我很好奇:你到底为什么需要一个6D数组?谢谢你,Gumbo,我运行了你的代码,它成功了。一个问题是我能为每个维度添加不同的颜色吗?这是一个魔方程序。@Edward我想你不太明白什么是多维数组,什么时候使用它。正如我所说,它是一个包含数组的数组,不能用任何东西填充维度,因为它们只是维度。您可以填充构造中的1024个字符串类型数组。为了表示立方体的六个边,您不需要一个可以容纳4096个值的6D数组,而只需要6个数组,每边一个。或者是一个3D数组(
String[6][3][3]
),您可以再次访问多维数据集上的字段,如
colors[side][column][row]
,感谢Gumbo给我的时间和解释。我确实很难理解3D之后的多维数组的概念,因为我的课程只涉及2D。我之所以尝试这样做,是因为我有一个朋友用6D数组制作了一个魔方游戏,我觉得这对我自己来说是一个很好的挑战。