繁体   English   中英

比较2D数组中行或列的元素(Java)

[英]Compare elements of rows or columns in 2D array (Java)

我有一个String[][] field 例如,它可能看起来像:

[xy] [xy] [xy] [xy] [xy]
[xy] [xy] [xy] [xy] [xy]
[xy] [xy] [xy] [xy] [xy]
[xy] [xy] [xy] [xy] [xy]
[xy] [xy] [xy] [xy] [xy]

行和列的数量相等,但是每次的数量可能不同。 我需要检查整个行或整个列的元素值是否相等。 我为3x3 field编写了一些错误的代码来检查行,这里是:

public boolean checkHorizontal(String[][] field) {
        boolean value = false;
        int x = 0;
        for (int i = 0; i < field.length; i++) {
            if (field[i][x].equals(field[i][x + 1]) &&
                    field[i][x + 1].equals(field[i][x + 2]) &&
                    !field[i][x].equals("[something]")) {
                value = true;
            }
        }
        return value;
    }

但这不是通用的检查行的方法,因为我们可能具有不同大小的矩阵 (并且需要添加x + 3x + 4x + 5等)。有没有一种有效的方法可以比较行的整个行/列2D阵列?

要检查所有行:

for(int i = 0; i < field.length; i++){
    for(int j = 1; j < field[i].length; j++){
        if(!field[i][0].equals(field[i][j])){
            return false;
        }
    }
}

return true;

@quidproquo的答案实际上是检查所有字段是否相等,但是很容易将解决方案调整为单个行或一列:

public boolean isEqual(String[][] data, int rowColumn, boolean row){
    int i = 1;
    int limit = (row) ? data[0].length : data.length;
    while(i<limit){
         if ((row) ? !data[rowColumn][i].equals(data[rowColumn][0])
             : !data[i][rowColumn].equals(data[0][rowColumn]))
             return false;
    }
    return true;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM