左对齐不能像我想要的那样工作

时间:2017-04-29 10:43:05

标签: java matrix

我觉得这是一个容易回答的问题,但我似乎无法弄清楚出于某种原因。

for (int i = 0; i < width; i++){
        for (int j = 0; j < height; j++) {

            switch (c) {
            case 'i': 
                System.out.printf("[%d]", val);
                break;
            case 'b': 
                System.out.printf("[x]");
                break;
            case 'w': 
                System.out.printf("[ ]");
                break;
            default:
                System.out.printf("[%c]", type);
                break;
            }
            System.out.printf("%-2s", "");
        }
        System.out.println();
    }

这是代码。我有一个矩阵,我想像桌子一样打印出来。但是,此代码不能以一种简洁的方式执行此操作。

System.out.printf("%-2s", "");切换System.out.print("\t");有效,但行之间的间距过宽。

有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案是执行两步格式化:

  1. 首先,在您的开关栏中,将格式化文本分配给字符串
  2. 在创建正确列宽的System.out.printf语句中,使用步骤1中的格式化字符串作为值。
  3. 所以在你的开关栏中:

    formatted = String.format("[%d]", val);
    

    以下:

    System.out.printf("%-6s", formatted);
    

    在您的情况下,这仍然非常简单,您还可以在切换块中合并列宽:

    System.out.printf("[%4d]", val); // 4 = 6 (column width) minus 2 for the brackets
    // ...
    System.out.printf("[x]   "); // add 3 spaces to the end
    // etc.