有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用于打印星号方形框的java数组

我试图用https://stackoverflow.com/a/34209565答案在边框周围写一个正方形的星号

但我根本无法让它工作

这是我正在尝试的代码

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

            }
        }
    }

我得到的结果是:

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

我试着运行答案中的代码,但它会产生一行星号。答案中代码中的某些内容被省略了

答案中的代码是:

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

答案中的输出是:

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

共 (2) 个答案

  1. # 1 楼答案

    当条目不是星形时,需要使用else来打印空格。此外,我会将println()移动到循环的末尾(而不是开始)。假设您实际上也希望填充array,那么也用一个空格填充它。像

    for (int j = 0; j < _j; j++) {
        if (i == 0 || j == 0 || i == _i - 1 || j == _j - 1) {
            array[i][j] = "*";
        } else {
            array[i][j] = " ";
        }
        System.out.print(array[i][j]);
    }
    System.out.println();
    

    输出

    **********
    *        *
    *        *
    *        *
    *        *
    *        *
    *        *
    *        *
    *        *
    **********
    
  2. # 2 楼答案

    您可以使用^{}方法,这样代码就不那么冗长了,还可以将生成包含在一个方法中。您可以通过设置两个参数使其成为动态的:行数和列数:

    class Test
    {
        public static void main(String[] args)
        {
            System.out.println(createBox(10, 10));
            System.out.println(createBox(10, 5));
        }
    
        public static String createBox(int qtaRig, int qtaCol)
        {
            String result = "";
            for(int r = 1; r <= qtaRig; r++)
            {
                if(r == 1 || r == qtaRig)
                {
                    result += "*".repeat(qtaCol);
                }
                else
                {
                    result += "*" + " ".repeat(qtaCol-2) + "*";
                }
                result += "\n";
            }
    
            return result;
        }
    }
    

    结果:

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