使用2D数组和用户输入创建和填充网格

时间:2017-11-06 16:36:35

标签: java arrays grid 2d

我创建了一个程序,要求用户指定网格的宽度,高度和字符。但是,当它打印网格时,它全部在一行而不是2D。

public static void main(String[] args) {

    System.out.println("A B C - create a new grid with Width A, Height B and Character C to fill grid);

    Scanner scan = new Scanner(System.in);
    int Width = scan.nextInt();
    int Height = scan.nextInt();

    char C = scan.next().charAt(0);
    char [][] grid = new char [Width][Height]; 

    for (int row = 0; row < Width-1 ; row++) {
        for (int col = 0; col < Height-1; col++) {
            grid[row][col] = C;  
            System.out.print(grid[row][col]);
        }
    }
}   

1 个答案:

答案 0 :(得分:2)

您需要在每行后面打印一个新行'\n'字符。否则控制台将不知道行何时结束。

此外,您没有正确命名变量。外部循环应遍历您的行并从0转到height - 1,内部(列)应从0转到width - 1。如果这令人困惑,请考虑另一种索引像素的常用方法:xy。虽然x表示您所在的列,但为什么y表示您在哪一行。

int width = scan.nextInt();
int height = scan.nextInt();

char c = scan.next().charAt(0);
char [][] grid = new char [width][height]; 

for (int row = 0; row < height - 1; col++) {    
    for (int col = 0; col < width - 1; row++) {
        grid[col][row] = c;  
        System.out.print(grid[col][row]);
    }
    System.out.print("\n");
}

另外请注意,我冒昧地用较低的字母(heightwidth)命名你的变量,使它们与java naming conventions一致。