代码之家  ›  专栏  ›  技术社区  ›  vinc

如何用字母索引矩阵?

  •  0
  • vinc  · 技术社区  · 1 年前

    我试图用java创建一个7x7矩阵,以数字和字母作为索引来定位每个单元格。为了更好地理解它,我正在为海战做准备。问题是我无法将字母与数组中的列对齐。你有什么想法吗?当然,字母在矩阵之外,所以这是一个打印问题。我不能使用任何类型的GUI。

    System.out.print("   A B C    D    E    F     G \n");
                        for (int i = 0; i < ROWS; i++) {
                            System.out.print((i + 1) + "  ");
                            for (int j = 0; j < COLUMNS; j++) {
                                System.out.print(campo[i][j] + "  ");
                            }
                            System.out.println(" " + (i + 1));
                        }
                        System.out.print("   A B C    D    E    F     G \n");
    

    我试着用print函数手动书写字母,但它们没有与矩阵的列对齐。

    编辑:我试图用这个“”填充矩阵,即使我修改了格式参数,字母也不会对齐。

    这就是它的样子

          A    B    C    D    E    F    G
      1   ⛃   ⛶   ⛶   ⛶   ⛶   ⛶   ⛁    1
      2   ⛶   ⛶   ⛶   ⛶   ⛶   ⛶   ⛶    2
      3   ⛶   ⛶   ⛶   ⛶   ⛶   ⛶   ⛶    3
      4   ⛶   ⛶   ⛶   ⛶   ⛶   ⛶   ⛶    4
      5   ⛶   ⛶   ⛶   ⛶   ⛶   ⛶   ⛶    5
      6   ⛶   ⛶   ⛶   ⛶   ⛶   ⛶   ⛶    6
      7   ⛁   ⛶   ⛶   ⛶   ⛶   ⛶   ⛃    7
    
    1 回复  |  直到 1 年前
        1
  •  1
  •   Basil Bourque    1 年前

    退房 System.out.printf 以指定宽度等格式参数。然后你可以这样做。这里我使用的是一个默认的数字数组 campo

    static final int COLUMNS = 7;
    static final int ROWS = 7;
    
    int[][] campo = new int[ROWS][COLUMNS];
    System.out.print("    ");
    for (int i = 0; i < COLUMNS; i++) {
        System.out.printf("%4c", 'A' + i);
    }
    System.out.println();
    
    for (int r = 0; r < ROWS; r++) {
        System.out.printf("%4d", r+1);
        for (int c = 0; c < COLUMNS; c++) {
            System.out.printf("%4s", campo[r][c]);
        }
        System.out.printf("%4d%n", r+1);
    }
    

    打印

           A   B   C   D   E   F   G
       1   0   0   0   0   0   0   0   1
       2   0   0   0   0   0   0   0   2
       3   0   0   0   0   0   0   0   3
       4   0   0   0   0   0   0   0   4
       5   0   0   0   0   0   0   0   5
       6   0   0   0   0   0   0   0   6
       7   0   0   0   0   0   0   0   7