java - java中的第六维字符串数组

标签 java arrays multidimensional-array

我正在java中处理第六维字符串数组,在手动填充第四维数组后,我想使用Array.fill()来节省自己的时间和繁琐的工作量。我已经尝试了许多在线“解决方案”以及 for/enhanced for 循环,但均无济于事。我不断收到异常 3130(线程“main”java.lang.ArrayStoreException 中的异常:java.lang.String)。任何帮助或见解将不胜感激。

谢谢你, 编辑。

这是我的代码:

字符串颜色[][][][][][] = new String[4][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");
                }

最佳答案

该类型的异常被抛出

indicate that an attempt has been made to store the wrong type of object into an array of objects.

(来自documentation)

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

String[][][][][][] 是一个由数组组成的数组,其中包含包含字符串的数组。嗯是的。

当您使用增强的 for 循环迭代 colors 时,您会去掉最左边的层,并且 Red 包含一个 5 维字符串数组,即包含包含一个数组的数组,该数组包含一个包含字符串的数组。但是 Arrays.fill 不会为您去掉外层,而是尝试用字符串填充最顶层,即保存 4 维数组的数组。这导致了异常。

您需要做的是逐层展开数组洋葱并填充实际的字符串数组,如下所示:

    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 数组

关于java - java中的第六维字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40568027/

相关文章:

java - 凯撒加密 ASCII 文本部分解密

java - 计算偶整数总和的更好方法

java - 将字节数组转换为 IntStream 的最佳方法是什么?

algorithm - 大网格上的熄灯拼图

python - 一般维数的多维网格

java - 通过应用获取表之间的父子关系

java - 需要有关如何将具有相同键的两个值从 json 格式解析为 java map 的建议

javascript - 为什么/什么时候 $.inArray 返回 -1?

javascript - 如果阈值是 Number.MIN_VALUE,则查找数组中超过特定​​阈值的最小数的函数不会找到小于 1 的数字。如何解决这个问题?

c++ - 数组声明在 C++ 中如何工作?