在2D Array的边界周围制作一个方形的星号

时间:2015-12-10 18:22:02

标签: java arrays loops multidimensional-array shapes

我试图用星号填充只有二维数组的外边框我已经完成了一半,但似乎我无法填充最后一列和二维数组中的最后一行。

so far I can do this

这是我的代码:

for (int i = 0; i < array.length; i++) 
{
    for (int j = 0; j < array.length; j++) 
    {
        if (array[i][j] == array[0][j] || array[i][j] == array[i][0])
        {
            array[i][j] = "*";
        }
    }
}

但显然我想在2D数组周围完成Square形状,所以我尝试了类似的东西。

for (int i = 0; i < array.length; i++) 
{
    for (int j = 0; j < array.length; j++) 
    {
        if (array[i][j] == array[array.length - 1][j]
                    || array[i][j] == array[i][array.length - 1]) 
        { 
            array[i][j] = "*";
        }
    }
}

我的想法只是转到2D数组中的最后一个有效位置,只需打印列和行,但它似乎不起作用。感谢我能得到的所有帮助,我非常感谢它,因为我是Java的学习者。

2 个答案:

答案 0 :(得分:0)

你可以做同样的事情,

public static void main(String[] args) {
    int n = 5;
    String [][] array = new String[n][n]; // 2-dimension array define...
    for (int i = 0; i < array.length; i++) {
        for (int j = 0; j < array.length; j++) {
            if(i == 0 || (i == array.length-1 || j==0 || j==array.length-1)){ // if top,left,right,bottom line then this...
                array[i][j] = "*|";
            }else{ // if not border line then this...
                     array[i][j] = "_|";

            }
        }

    }

    for (int i = 0; i < array.length; i++) {
        for (int j = 0; j < array.length; j++) {
           System.out.print(array[i][j] + " ");
        }
        System.out.println("");
    }
}

输出 enter image description here

答案 1 :(得分:0)

@Ricki,你的想法是正确的,但你没有考虑的是array[i][j] == array[array.length - 1][j]没有比较&#34; shell&#34;每个人说,但是它的内在价值,即使array[1][1] != array[2][1],如果它们的值是null,它们也是等于。

尝试使用此代码:

int _i = 10;
int _j = 10;
String[][] array = new String[_i][_j];
for (int i = 0; i < _i; i++) {
    for (int j = 0; j < _j; j++) {
        if(i==0 || j == 0 || i == _i-1|| j == _j-1){
            array[i][j] = "*";
        }
    }
}

我所做的是比较第一行(i==0),第一列(j==0),最后一行(i == _i-1)和最后一列({ {1}})。

然后:

j == _j-1