我是编程新手,但我的一项运动使我丧命。如何打印仅由星号组成的网格(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];
答案 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.
}
}
}
您始终可以编辑X
和Y
的值并获得所需的结果。
然后,您可以将此方法作为数组的参数,并打印每个元素而不是星号。