使用2D字符数组打印带字符的正方形

时间:2018-03-17 20:13:30

标签: java

请帮忙!用户应输入正方形的大小以及希望填充它的字符。这是我现在的代码:

Scanner myKey = new Scanner(System.in);

System.out.print("\nHow many rows and columns (min 4 & max 20)? ");
        int rowCol1 = myKey.nextInt();
        System.out.print("Which character do you want to fill your square with? ");
        char symbol1 = myKey.next(".").charAt(0);

        char[][] choice1 = new char[rowCol1][symbol1];

        for (int i = 0; i<choice1.length; i++) {
            for (int j = 0; j<choice1[i].length; j++) {
                choice1[i][j] = symbol1;
            }
        }

        for (int i = 0; i<choice1.length; i++) {
            for (int j = 0; j<choice1[i].length; j++) {
                System.out.print(choice1[i][j] + " ");
            }
            System.out.println();
        }

我的代码不正确。如果我输入例如4和@,则正确的输出应为:

@ @ @ @ 
@ @ @ @
@ @ @ @ 
@ @ @ @ 

请帮我修改我的代码,以便获得所需的输出。提前谢谢

1 个答案:

答案 0 :(得分:1)

您似乎错误地初始化了数组的大小。第二个参数应与第一个参数相同,因为您需要一个行和列数相等的方阵。因此,不应使用 symbol1 作为列数的参数,而应使用用于定义行数的相同变量 - rowCol1

行 -

char[][] choice1 = new char[rowCol1][symbol1];

应将 symbol1 替换为 rowCol1 ,因为您希望它是方阵 -

char[][] choice1 = new char[rowCol1][rowCol1];