试图在单个2D数组中查找行之间的公共元素

时间:2016-04-30 01:19:46

标签: java search multidimensional-array

我有一个2维的String数组,我试图找出它们之间是否有共同的元素以及该元素是什么。它应该查看(0,0)中的元素,并将其与(1,0),(1,1),(1,2)中的元素进行比较,依此类推。我试图使用嵌套for循环,但我似乎无法正确。有人能告诉我我的代码有什么问题以及我应该如何修复它?

for(int i = 0; i < times.length; i++ ){
        for(int j = 0; j < times[i].length; j++ ){
            if(i+1 < times.length)  
                if(times[i][j].equals(times[i+1][j])){
                    System.out.println(times[i][j + " = " +  times[i+1][j])
                }
        }
    }

2 个答案:

答案 0 :(得分:0)

你想要这样的东西:

String[][] times = new String[][] { 
   { "aaa", "bbb", "ccc" }, 
   { "bbb", "dfdf", "ddd" }, 
   { "dfdfff", "ddd" } 
};

for (int i = 0; i < times.length - 1; i++)
{
    for (int j = 0; j < times[i].length; j++)
    {
        String currStringPrevRow = times[i][j];

        String [] nextRow = times[i + 1];

        for (String s : nextRow)
        {
            if (s.equals(currStringPrevRow))
            {
                System.out.println(s + " in row [" + i + "] is equal to " + s + " is row " + (i+1));
            }
        }
    }
}

答案 1 :(得分:0)

我会尽量保持直观和易于理解。第一行的边界是[0,times.length - 2]。这样,第二行的边界将是[1,times.length - 1]。 对于第一行中的每个元素,我将检查第二行中的每个元素。以下代码演示了这一点。

for(int row = 0 ; row < times.length - 1 ; row++) {
    for(int colFirst = 0 ; colFirst < times(row).length ; colFirst++) {
        for(int colSecond = 0 ; colSecond < times(row + 1).length ; colSecond++) {
            if(times[row][colFirst].equals(times[row+1][colSecond]))
                System.out.println(times[i][j + " = " +  times[i+1][j]);
        }
    }
}