2009-05-06 82 views
1

我是一名初學者,我正在嘗試格式化輸出。
我試圖產生小數的表:爲什麼此Java格式化的輸出不正確?

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表示,如果「 - 」標誌沒有被拋出,那麼輸出將是正確的 - 合理,這是我想要的。我已經在%之後加上''來表示我希望在必要時用空格填充輸出。我錯過了什麼?

(我沒用過的作業標籤,因爲我沒有在任何課程就讀。)

回答

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 
+0

非常感謝。 – 2009-05-06 09:32:11