比较多维数组

时间:2015-11-09 04:35:01

标签: java arrays javafx compare

我有2张图片,每张图片都是完整图片的一部分,2张合并后可以创建完整的图片。

然而,在2张图像上有重叠,我正在尝试创建一个程序,该程序将找到image2的顶行与图像1中的任何一行像素相遇的位置。 我创建了一个for循环来收集数组中每个图像的每一行像素。

这是我的代码:

int row = 0;
    for (int i = 0; i < imageArray1.length; i++) {

        for (int j = 0; j < imageArray1[i].length; j++) {
            if (imageArray1[i][j] == (imageArray2[0][0])) {
                row = imageArray1[i][j];
            }
        }

    }

问题是我很确定我只收集了第二张图片左上角的单个像素,而不是整行。 任何想法如何解决这个问题? java新手

2 个答案:

答案 0 :(得分:0)

您需要修复imageArray2[0][0],以便始终只与imageArray2的第一个索引进行比较。您需要与imageArray2一起迭代imageArray1以进行完整比较。为此,我建议您为imageArray2使用嵌套for循环。

答案 1 :(得分:0)

您需要针对image2中的每一行交叉检查image1中的每一行。因此, 3级循环 1)循环遍历image1中的行 2)循环遍历image2中的行 3)< / strong>遍历image1和image2中当前行中的列以确定它们是否重叠

    int overlappingRowInImage1 = 0;
    int overlappingRowInImage2 = 0;
    int[][] imageArray1 = null;
    int[][] imageArray2 = null;
    // loop through the rows in the first image
    for (int row1 = 0; row1 < imageArray1.length; row1++) {
        boolean foundIdenticalRow = false;
        // loop through the rows in the second image
        for (int row2 = 0; row2 < imageArray2.length; row2++) {
            foundIdenticalRow = true;
            // two rows are identical if each column in both rows are the same
            for (int col = 0; col < imageArray1[row1].length; col++) {
                if (imageArray1[row1][col] != (imageArray2[row2][col])) {
                    foundIdenticalRow = false;
                    break;
                }
            }
            if (foundIdenticalRow) {
                overlappingRowInImage1 = row1;
                overlappingRowInImage2 = row2;
                break;
            }
        }
        if (foundIdenticalRow) {
            System.out.println("Row " + overlappingRowInImage1 + " in image 1 is overlapping with Row " +
                    overlappingRowInImage2 + " in image 2");
            break;
        }
    }