在2d数组中移动元素

时间:2014-11-14 21:00:28

标签: java arrays multidimensional-array

我试图将2d数组中的false元素移动到元素

中的不同空格
'x''o'' '
' '' ''o'
'x''x''o'

数组中的第一个元素(x)是false,因为它周围没有类似的元素。 我试图使用嵌套的for循环,但没有得到结果 这就是我得到的

' ''o''x'
'x''x''o'
'x''x''o'

它将false x移动到所有空格而不是仅仅一个空格。请给我任何提示 这是我的代码。我尝试过使用break,但它确实没有用。 组织是传递元素的数组

    char[][] arr = new char[tissue.length][tissue[0].length];
    int count = 0;
    char temp;
    for(int i=0; i<tissue.length; i++){
        for(int j=0; j<tissue[0].length; j++){
            if(!isSatisfied(tissue,i,j,threshold)){
                temp = tissue[i][j];
                for(int k=0; k<tissue.length; k++){
                    for(int l=0; l<tissue.length; l++){
                        if(tissue[k][l] == ' '){
                            tissue[i][j] = arr[k][l];
                            arr[k][l] = temp;
                        }
                    }
                }
            }
        }
    }

2 个答案:

答案 0 :(得分:2)

当找到第一个替换空间

时,你必须打破循环
 if(!isSatisfied(tissue,i,j,threshold)){
                    temp = tissue[i][j];
                    outer:
                    for(int k=0; k<tissue.length; k++){
                        for(int l=0; l<tissue.length; l++){
                            if(tissue[k][l] == ' '){
                                tissue[i][j] = arr[k][l];
                                arr[k][l] = temp;
                                break outer;
                            }
                        }
                    }
                }

答案 1 :(得分:0)

首先在

for(int l=0; l<tissue.length; l++){

它应该是组织[0] .length?

中的第二名
tissue[i][j] = arr[k][l];

arr应该在初始化之前可以分配给另一个变量。