Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较Java中的2D数组和打印差异_Java_Arrays_Compare_Logic - Fatal编程技术网

比较Java中的2D数组和打印差异

比较Java中的2D数组和打印差异,java,arrays,compare,logic,Java,Arrays,Compare,Logic,编辑:关闭,因为下面的代码似乎有效 我目前面临以下问题: 我有两个二维数组,其中第二个维度的大小始终为7(因此最大索引为6)。 现在我需要比较这些阵列。 我想打印出来,如果有一个字段添加或删除,在任何索引 例如: 阵列1: 0|1|2|3 0 |1|2|5 1 |4|4|6 (...) 6 |6|2|8 阵列2 0|1|2|3|4 0 |1|1|2|5 1 |4|4|4|6 (...) 6 |6|7|2|8 如您所见,我在第二个数组中添加了一列。 现在我需要打印此列或将其添加到数组列表中

编辑:关闭,因为下面的代码似乎有效

我目前面临以下问题:
我有两个二维数组,其中第二个维度的大小始终为7(因此最大索引为6)。
现在我需要比较这些阵列。
我想打印出来,如果有一个字段添加或删除,在任何索引

例如:

阵列1:

 0|1|2|3
0 |1|2|5
1 |4|4|6
(...)
6 |6|2|8
阵列2

 0|1|2|3|4
0 |1|1|2|5
1 |4|4|4|6
(...)
6 |6|7|2|8
如您所见,我在第二个数组中添加了一列。
现在我需要打印此列或将其添加到数组列表中。

当一列被删除或更改时,也会发生同样的情况

我怎样才能做到这一点

到目前为止,我的代码是:

static List<String[]> differences;
static List<String[]> checkForDifferences(String[][] tableOld,String[][] tableNew) {
    differences = new ArrayList<String[]>();
    if(!Arrays.deepEquals(tableNew,tableOld)) {
        for(int hour = 0; hour < tableOld.length;hour++) {
            try {
                boolean removed = true;
                for(int hour2 = 0;hour2 < tableNew.length;hour2++)
                    if(Arrays.equals(tableOld[hour],tableNew[hour2]))
                        removed = false;
                    if(removed)
                        differences.add(new String[]{"-",tableOld[hour][0], tableOld[hour][1], tableOld[hour][2], tableOld[hour][3], tableOld[hour][4], tableOld[hour][5], tableOld[hour][6]});
            } catch (ArrayIndexOutOfBoundsException e){
                e.printStackTrace();
                break;
            }
        }
        for (int hour = 0; hour < tableNew.length; hour++) {
            try {
                boolean added = true;
                for (int hour2 = 0; hour2 < tableOld.length; hour2++)
                    if (Arrays.equals(tableNew[hour], tableOld[hour2]))
                        added = false;
                if (added)
                    differences.add(new String[]{"+", tableNew[hour][0], tableNew[hour][1], tableNew[hour][2], tableNew[hour][3], tableNew[hour][4], tableNew[hour][5], tableNew[hour][6]});
            } catch (ArrayIndexOutOfBoundsException e) {
                e.printStackTrace();
                break;
            }
        }

        return differences;
    } else {
        return null;
    }
}
静态列表差异;
差异的静态列表检查(字符串[][]tableOld,字符串[][]tableNew){
差异=新的ArrayList();
if(!Arrays.deepEquals(tableNew,tableOld)){
for(int hour=0;hour
显然,我的代码是有效的。我只是用错了。

显然,我的代码是有效的。我只是用错了。

我试图检查array2中的某个地方是否存在子数组1[I],如果没有的话,它已经被删除;如果子数组array2[i]在array1中不存在,它已被添加请编辑您的帖子,并将您的代码添加到其中,以便我们可以尝试/查看出现了什么问题。欢迎使用堆栈溢出!请阅读我们的文章,以帮助您提出一个好问题,从而得到一个好答案。请以一种更可读(更像Java?)的方式重新格式化您的数组(对不起,我不能不猜测就真正理解任何内容)。然后至少添加两个示例,说明您希望从某个输入中获得什么样的输出。我添加了我的代码,到目前为止,我试图检查子数组array1[i]是否存在于array2中的某个位置,如果没有,它是否已被删除;如果子数组array2[i]在array1中不存在,它已被添加请编辑您的帖子,并将您的代码添加到其中,以便我们可以尝试/查看出现了什么问题。欢迎使用堆栈溢出!请阅读我们的文章,以帮助您提出一个好问题,从而得到一个好答案。请以一种更可读(更像Java?)的方式重新格式化您的数组(对不起,我不能不猜测就真正理解任何内容)。然后至少添加两个示例,说明您希望从某个输入中获得什么样的输出