为什么这种Java格式的输出不是正确的?

时间:2009-05-06 09:16:34

标签: java formatting

我是初学者,我正在尝试格式化输出 我正在尝试生成一个小数表:

for (int i = 0; i < 8; i++) {
  for (int j = 0; j < 8; j++) {
    row = (double) 5*i;
    column = (double) j + 1;
    System.out.format("% 6.3f", row/column);
    System.out.print("\t");
  }
  System.out.format("%n");
}

这会产生:

 0.000   0.000    0.000   0.000   0.000   0.000   0.000   0.000 
 5.000   2.500    1.667   1.250   1.000   0.833   0.714   0.625 
 10.000 5.000    3.333   2.500   2.000   1.667   1.429   1.250  
 15.000 7.500    5.000   3.750   3.000   2.500   2.143   1.875  
 20.000 10.000   6.667   5.000   4.000   3.333   2.857   2.500  
 25.000 12.500   8.333   6.250   5.000   4.167   3.571   3.125  
 30.000 15.000   10.000  7.500   6.000   5.000   4.286   3.750  
 35.000 17.500   11.667  8.750   7.000   5.833   5.000   4.375  

API说如果没有抛出' - '标志,那么输出将是右对齐的,这就是我想要的。我在'%之后'表示我希望在必要时用空格填充输出。我错过了什么?

(我没有使用过家庭作业标签,因为我没有参加任何课程。)

1 个答案:

答案 0 :(得分:2)

您在格式化字符串中错误地添加了空格:

System.out.format("% 6.3f", row/column);

应该是:

System.out.format("%6.3f", row/column);

你得到:

 0.000         0.000         0.000         0.000         0.000         0.000         0.000         0.000        
 5.000         2.500         1.667         1.250         1.000         0.833         0.714         0.625        
10.000         5.000         3.333         2.500         2.000         1.667         1.429         1.250        
15.000         7.500         5.000         3.750         3.000         2.500         2.143         1.875        
20.000        10.000         6.667         5.000         4.000         3.333         2.857         2.500        
25.000        12.500         8.333         6.250         5.000         4.167         3.571         3.125        
30.000        15.000        10.000         7.500         6.000         5.000         4.286         3.750        
35.000        17.500        11.667         8.750         7.000         5.833         5.000         4.375