views:

499

answers:

2

I'm a beginner, and I'm experimenting with formatted output.
I'm trying to produce a table of decimals:

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");
}

This produces:

 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

The API says that if the '-' flag is not thrown, then the output will be right-justified, which is what I want. I have put ' ' after % to indicate that I want the output padded with spaces when necessary. What am I missing?

(I haven't used the homework tag, because I am not enrolled in any course.)

+2  A: 

You have added a space incorrectly into the formatting String:

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

Should be:

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

And you get:

 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
willcodejavaforfood
Thank you very much.
FarmBoy
No problems mate :)
willcodejavaforfood
A: 

To get to bottom of this, try to avoid using tabs between your columns (they're just obscuring the problem) and put visible separator characters into your format to see what the format actually does.

Experiment with the numbers in the format string next (especially making them bigger) to see what happens.

David Schmitt