【问题标题】:Formatting Matrix with Labels使用标签格式化矩阵
【发布时间】:2016-11-30 06:57:51
【问题描述】:

好的,这可能是一个非常基本的问题,但我一生都无法弄清楚 Java 输出格式,我只是没有练习过它。我正在构建一个术语文档矩阵,用于计算一系列句子中某些单词的出现次数。使用以下代码可以很好地得出矩阵

for(int i=0; i<rows; i++){
            for(int j=0; j<columns; j++){
                System.out.print(String.format("%3s", matrix[i][j]));
            }
            System.out.println("");
}

输出这个:

  0  0  1  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  1  0  1  0  1  0  0  1  0  0  1  0  0  0
  0  0  0  0  0  0  1  0  0  0  0  2  0  0  1  0  0  0  0  1  0  2  0  0  0  1  0  0  0  0  0  0  0
  0  0  0  0  1  1  0  0  0  1  1  0  0  0  0  1  0  1  0  0  0  0  0  0  3  0  0  1  0  0  0  0  0
  0  1  0  0  0  0  0  1  0  0  0  0  0  0  1  0  0  0  0  1  0  0  0  1  0  0  0  0  1  0  0  0  0
  0  0  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  1  0  0  0  0  0  0  2  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  1  1  0  0  0  0  0  0  1  0  0  0  0  1  0  1  0  0  0  0  0  0  0  1  0  0  0
  0  1  1  0  0  0  0  0  0  0  0  2  0  0  1  0  1  0  0  1  0  2  0  0  0  0  1  0  0  0  0  0  0
  1  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  1
  0  0  0  0  1  1  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0
  0  0  1  0  0  0  1  0  1  0  0  0  0  0  1  0  0  0  0  0  0  0  0  1  0  0  0  0  1  0  0  0  0
  0  0  0  0  0  2  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  2  0  0  3  0  0  0  0  0
  0  0  1  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  2  2  0  0
  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0
  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  2  1  1  0  0  0  0  1  0  0  0  0  0  0
  0  0  0  0  1  1  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0
  1  0  0  0  0  0  0  0  0  1  0  0  1  0  0  2  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0
  0  1  0  1  0  0  1  0  0  0  0  1  0  0  0  0  1  0  0  2  0  1  0  1  0  1  0  0  0  0  0  0  0
  0  0  0  0  1  1  0  0  0  2  0  0  1  1  0  1  0  0  0  0  0  0  0  0  3  0  0  0  0  0  0  0  1

但是我想添加行和列标识符,使其看起来更像这样(列标题来自字符串数组,将有 20 个句子):

             applianc, around, autonom, averag, bath, bedroom, car, charg, drive, eat, home, hour, hous, includ, kilomet, kitchen, lap, larg, live, mile, over, per, pet, road, room, second, sedan, size, test, up, updat, veri, water
Sentence 1:

Sentence 2:

Sentence 3:
.
.
.

将行和列排成一行,以便容易识别,可能使用网格或其他东西作为分隔符。我不知道如何做到这一点。

【问题讨论】:

    标签: java matrix formatting


    【解决方案1】:

    按照你的例子,这样的事情应该可以工作

    String[] columns = {"applianc", " around", " autonom", " averag", " bath", " bedroom", " car", " charg", " drive", " eat", " home", " hour", " hous", " includ", " kilomet", " kitchen", " lap", " larg", " live", " mile", " over", " per", " pet", " road", " room", " second", " sedan", " size", " test", " up", " updat", " veri", " water"};
    int[][] matrix = {{0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0},
            {0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0},
            {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 1, 0, 0, 1, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
            {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
            {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0},
            {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0},
            {0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
            {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0},
            {0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 1, 1, 0, 0, 0, 2, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1}};
    
    
    System.out.print(String.format("%" + ("sentence ".length() + ("" + matrix.length).length() + 2) + "s"," "));
    
    for(int i=0; i<columns.length; i++){
        System.out.print(columns[i]);
    }
    
    System.out.println("");
    
    for(int i=0; i<matrix.length; i++) {
        System.out.print("sentence " + String.format("%" + ("" + matrix.length).length() + "S", (i + 1)) + ": ");
    
        for(int j=0; j<matrix[i].length; j++){
            System.out.print(String.format("%" + columns[j].length() + "s", matrix[i][j]));
        }
    
        System.out.println("");
    }
    

    输出:

                 applianc around autonom averag bath bedroom car charg drive eat home hour hous includ kilomet kitchen lap larg live mile over per pet road room second sedan size test up updat veri water
    sentence  1:        0      0       1      0    0       0   0     0     0   0    0    1    0      0       0       0   0    0    0    1    0   1   0    1    0      0     1    0    0  1     0    0     0
    sentence  2:        0      0       0      0    0       0   1     0     0   0    0    2    0      0       1       0   0    0    0    1    0   2   0    0    0      1     0    0    0  0     0    0     0
    sentence  3:        0      0       0      0    1       1   0     0     0   1    1    0    0      0       0       1   0    1    0    0    0   0   0    0    3      0     0    1    0  0     0    0     0
    sentence  4:        0      1       0      0    0       0   0     1     0   0    0    0    0      0       1       0   0    0    0    1    0   0   0    1    0      0     0    0    1  0     0    0     0
    sentence  5:        0      0       0      0    0       1   0     0     0   0    1    0    0      0       0       0   0    1    0    0    0   0   0    0    2      0     0    0    0  0     0    0     0
    sentence  6:        0      0       0      0    0       0   1     1     0   0    0    0    0      0       1       0   0    0    0    1    0   1   0    0    0      0     0    0    0  1     0    0     0
    sentence  7:        0      1       1      0    0       0   0     0     0   0    0    2    0      0       1       0   1    0    0    1    0   2   0    0    0      0     1    0    0  0     0    0     0
    sentence  8:        1      0       0      0    0       0   0     0     0   0    0    0    0      1       0       0   0    0    0    0    0   0   1    0    0      0     0    0    0  0     0    0     1
    sentence  9:        0      0       0      0    1       1   0     0     0   0    1    0    1      0       0       0   0    0    0    0    0   0   0    0    1      0     0    0    0  0     0    0     0
    sentence 10:        0      0       0      0    0       0   0     0     0   0    0    0    0      0       0       0   0    0    0    0    0   0   1    0    0      0     0    0    0  0     0    0     0
    sentence 11:        0      0       1      0    0       0   1     0     1   0    0    0    0      0       1       0   0    0    0    0    0   0   0    1    0      0     0    0    1  0     0    0     0
    sentence 12:        0      0       0      0    0       2   0     0     0   0    0    0    0      0       0       0   0    1    0    0    0   0   0    0    2      0     0    3    0  0     0    0     0
    sentence 13:        0      0       1      0    0       0   0     0     0   0    0    0    0      0       1       0   0    0    0    1    1   0   0    0    0      0     0    0    0  0     0    0     0
    sentence 14:        0      0       0      0    0       0   0     0     0   0    0    0    1      0       0       1   0    0    0    0    0   0   0    0    0      0     0    0    0  2     2    0     0
    sentence 15:        0      0       1      0    0       0   1     0     0   0    0    0    0      0       0       0   0    0    0    0    0   0   0    1    0      0     0    0    0  0     0    0     0
    sentence 16:        0      0       0      1    0       0   0     0     0   0    0    0    0      0       0       0   0    0    0    2    1   1   0    0    0      0     1    0    0  0     0    0     0
    sentence 17:        0      0       0      0    1       1   0     0     0   0    1    0    0      0       0       0   0    0    0    0    0   0   0    0    1      0     0    0    0  0     0    0     0
    sentence 18:        1      0       0      0    0       0   0     0     0   1    0    0    1      0       0       2   0    0    0    0    0   0   0    0    0      0     0    0    0  1     1    0     0
    sentence 19:        0      1       0      1    0       0   1     0     0   0    0    1    0      0       0       0   1    0    0    2    0   1   0    1    0      1     0    0    0  0     0    0     0
    sentence 20:        0      0       0      0    1       1   0     0     0   2    0    0    1      1       0       1   0    0    0    0    0   0   0    0    3      0     0    0    0  0     0    0     1
    

    【讨论】:

    • 实际上,列宽相同可能更好,即相同的字符数,以便“applianc”和“up”具有相同的宽度
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    相关资源
    最近更新 更多