【问题标题】:Make a square shape of asterisc around border of 2D Array在 2D Array 的边界周围制作一个方形星号
【发布时间】:2015-12-10 18:22:01
【问题描述】:

我正在尝试仅用星号填充 2D 数组的外边框我已经完成了一半,但似乎我无法让它填充 2D 数组中的最后一列和最后一行。

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] = "*";
        }
    }
}

我的想法只是转到二维数组中的最后一个有效位置并简单地打印列和行,但它似乎不起作用。感谢我能得到的所有帮助,我真的很感激,因为我是一名 Java 学习者。

【问题讨论】:

    标签: java arrays loops multidimensional-array shapes


    【解决方案1】:

    @Ricki,你的思路是对的,但是你没有考虑到的是array[i][j] == array[array.length - 1][j]不是比较“shell”,而是比较它的内在价值,所以,即使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) 和最后一列 (j == _j-1)。

    然后:

    **********
    *        *
    *        *
    *        *
    *        *
    *        *
    *        *
    *        *
    *        *
    **********
    

    【讨论】:

      【解决方案2】:

      你也可以这样做,

      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("");
          }
      }
      

      输出:

      【讨论】:

        猜你喜欢
        • 2015-02-13
        • 2020-08-04
        • 1970-01-01
        • 2010-09-22
        • 2014-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-09
        相关资源
        最近更新 更多