如何使用多维数组打印星号网格?

时间:2019-03-27 21:07:26

标签: java arrays multidimensional-array

我是编程新手,但我的一项运动使我丧命。如何打印仅由星号组成的网格(5乘6)? [稍后,这些星号将被替换为用StdIn.readInt()和switch语句读取的字母,但到目前为止,我至少需要了解如何打印网格。我将非常感谢您的帮助!

更具体地说,网格应如下所示:

//THIS ISN'T THE CODE; JUST AN ILLUSTRATION OF WHAT SHOULD BE PRINTED

  0 1 2 3 4 5
0 * * * * * *
1 * * * * * *
2 * * * * * *
3 * * * * * *
4 * * * * * *

//I AM SUPPOSED TO START WITH SOMETHING LIKE THIS:

public class Grid {
 static int X = 6;
 static int Y = 7;
public static void main(String[]args) {
    int [][] grid = new int [X][Y];

1 个答案:

答案 0 :(得分:0)

可以用很多方法完成此操作,但这是我的方法:

要打印网格时,必须使用2个嵌套的for循环。 让我们看看使用2个嵌套的for循环会发生什么:

for(int i = 0; i < 6; i++){

   for(int j = 0; j < 7; j++){

   }
}

我们从第一个循环开始

对于i = 0,我们将进入第二个循环并从0迭代到6。

对于i = 1,我们将进入第二个循环并从0迭代到6。

...

对于i = 5,我们将进入第二个循环并从0迭代到6。

您应该注意的是,j会进行迭代,并从0到6取值为i

回到您的问题,并按照我刚刚显示的内容进行比较,您应该注意到,对于每条,您正在打印 7个值(在一列中)

我们假设i是行数,j是该行(列)中每个值的索引。

public static void printGrid() {
        for (int i = 0; i < 6; i++) {
            System.out.println();
            for (int j = 0; j < 7; j++) {
                System.out.print("*");
            }
        }
    }

此代码在每条i)上打印7个星号(j)。 每当我递增时,我们就回到下一行System.out.println()。这就是为什么我们将其与for放在i循环中的原因。

在您的情况下,我们必须对此代码进行一些调整,以便能够在侧面打印数字,并在左上角打印该空格。

解释在我代码的注释中。

public class Question_55386466{

        static int X = 6;
        static int Y = 7;

        public static void printGrid() {
            System.out.print("  ");         // Printing the space on the top left corner
            for (int i = 0; i < X; i++) {
                if (i > 0) {                // Printing the numbers column on the left, taking i>0 to start from the second line (i == 1)
                    System.out.println();   // Going to the next line after printing the whole line
                    System.out.print(i - 1);//Printing the numbers of the column. Taking i-1 because we start the count for i == 1 not 0
                }
                for (int j = 0; j < Y; j++) {
                    if (i == 0)
                        System.out.print(j + "  ");//Print the first line numbers.
                    else
                        System.out.print(" * "); //if the line isn't the first line(i == 0), print the asterixes.

                }

            }
        }

您始终可以编辑XY的值并获得所需的结果。

然后,您可以将此方法作为数组的参数,并打印每个元素而不是星号。