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

时间:2017-01-09 19:50:01

标签: java arrays

我有MediaPlayer mp = MediaPlayer.create(getActivity(), Uri.parse(soundUrl)); //mp.prepare() is not needed here mp.setLooping(false); mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){ @Override public void onCompletion(MediaPlayer mp) { Log.i(LOGTAG, "onComplete hit"); mp.stop(); mp.release(); } }); 。例如,它可能看起来像:

String[][] field

行数和列数相等,但每次数字可能不同。我需要检查整行或整列的元素值是否相等。 我已经为3x3 [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] 写了一些错误的代码来检查行,这里是:

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 + 4等) 有没有有效的方法来比较2D数组的整行/列?

2 个答案:

答案 0 :(得分:3)

检查所有行:

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;

答案 1 :(得分:0)

@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;
}