Java 2D数组在比较期间未打印最后一个元素

Java 2D数组在比较期间未打印最后一个元素,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我正在尝试将原始二维数组中的行替换为更新的二维数组。问题是它在更换过程中不会存储最后一个元素 这是我的密码: String[][] updatedArray = {{"red","a","b","c"},{"yellow","a","b","c"}, {"purple","a","b","c"}}; String[][] originalArray = {{"red","aa","bb","cc"},{"yellow","ww","vv","zz"}, {"green","yy","u

我正在尝试将原始二维数组中的行替换为更新的二维数组。问题是它在更换过程中不会存储最后一个元素

这是我的密码:

String[][] updatedArray = {{"red","a","b","c"},{"yellow","a","b","c"}, {"purple","a","b","c"}};

    String[][] originalArray = {{"red","aa","bb","cc"},{"yellow","ww","vv","zz"}, {"green","yy","uu","pp"}, {"purple","nn","mm","bb","hello"}};

    for (int i = 0; i < updatedArray.length;i++ ) {
        for (int j = 0; j < updatedArray[i].length; j++){
            for(int x = 0; x < originalArray.length;x++){
                for(int z = 0; z < originalArray[x].length;z++){
                if(originalArray[x][0].equals(updatedArray[i][0])) {
                    updatedArray[i][j] = originalArray[x][j];
                    System.out.println("There's a match!!");
                }else{
                    System.out.println("No match!");
                }
            }
            }
        }   
    }

    System.out.println("originalArray:");
    System.out.println(Arrays.deepToString(originalArray));
    System.out.println("updatedArray:");
    System.out.println(Arrays.deepToString(updatedArray));
String[]updateArray={{“红色”、“a”、“b”、“c”}、{“黄色”、“a”、“b”、“c”}、{“紫色”、“a”、“b”、“c”};
字符串[][]原始数组={{“红色”、“aa”、“bb”、“cc”}、{“黄色”、“ww”、“vv”、“zz”}、{“绿色”、“yy”、“uu”、“pp”}、{“紫色”、“nn”、“mm”、“bb”、“你好”};
for(int i=0;i
例如,最后一行“purple”中最初更新的数组具有
{“purple”、“a”、“b”、“c”}
。使用originalArray中的值进行替换时,上述代码仅输出:

。。。[紫色,nn,mm,bb]

这是错误的,因为它没有添加最后一个元素“hello”。它应该输出:

。。。[紫色,nn,mm,bb,你好]

我知道这方面存在问题:

UpdateArray[i][j]=原始Array[x][j]

问题是,无论我尝试将originalArray[x][j]更改为originalArray[x][z],都是如此。。。它把一切都搞砸了


有什么想法吗?仍在尝试获取2D数组的jist。

如果存在匹配项,您可以将整个数组设置为原始数组,而不是尝试将UpdateArray中的每个元素设置为原始数组中的相应元素

String[][] updatedArray = {{"red","a","b","c"},{"yellow","a","b","c"}, {"purple","a","b","c"}};

String[][] originalArray = {{"red","aa","bb","cc"},{"yellow","ww","vv","zz"}, {"green","yy","uu","pp"}, {"purple","nn","mm","bb","hello"}};

for (int i = 0; i < updatedArray.length;i++ ) {
    for (int j = 0; j < originalArray.length; j++){
        if(originalArray[j][0].equals(updatedArray[i][0])) {
            updatedArray[i] = originalArray[j];
            System.out.println("There's a match!!");
        }else{
            System.out.println("No match!");
        }
    }   
}
String[]updateArray={{“红色”、“a”、“b”、“c”}、{“黄色”、“a”、“b”、“c”}、{“紫色”、“a”、“b”、“c”};
字符串[][]原始数组={{“红色”、“aa”、“bb”、“cc”}、{“黄色”、“ww”、“vv”、“zz”}、{“绿色”、“yy”、“uu”、“pp”}、{“紫色”、“nn”、“mm”、“bb”、“你好”};
for(int i=0;i
问题在于如何选择迭代UpdateArray的维度,这些维度与原始Array的维度不同

让我们看看i=2的情况,它是紫色的“行”:

for (int j = 0; j < updatedArray[i].length; j++){ 

updatedArray[i=2].length = 4
原件:

index =   0      , 1 ,  2 ,  3  , 4
        {"purple","nn","mm","bb","hello"}
因此,由于j始终小于4,因此它永远不能用于索引原始阵列[x][4]=“hello”

DANGER:此代码也无法处理需要为updatedArray扩展紫色数组这一事实。Java可能会为您带来一些魔力,但我不相信它会以这种方式工作

建议:
-在将数据从原始阵列复制到更新阵列之前,比较每行的长度并在必要时分配额外内存
-如果可能,只需在原始和更新之间复制整行

index =   0      , 1 ,  2 ,  3  , 4
        {"purple","nn","mm","bb","hello"}