2014-10-27 91 views
-1

所以我想一次的codeeval的方便問題,爲multiplication tables如何以右對齊方式打印數字?

其中一個要求是

(這些數字是右對齊並去掉領先/每行尾部的空格 )

我不知道該怎麼做,我當前的代碼看起來像

private static void printTable(final int numberOfTables, final int numberOfTimes) { 
     for (int i = 1; i <= NUMBER_OF_TABLES; i++) { 
      final StringBuilder sb = new StringBuilder(); 
      for (int j = 1; j <= NUMBER_OF_TIMES; j++) { 
       sb.append(i * j).append(" "); 
      } 
      System.out.println(sb.substring(0, sb.length() - 4)); 
     } 
    } 

和我得到的回覆是

1 2 3 4 5 6 7 8 9 10 11 12 
2 4 6 8 10 12 14 16 18 20 22 24 
3 6 9 12 15 18 21 24 27 30 33 36 
4 8 12 16 20 24 28 32 36 40 44 48 
5 10 15 20 25 30 35 40 45 50 55 60 
6 12 18 24 30 36 42 48 54 60 66 72 
7 14 21 28 35 42 49 56 63 70 77 84 
8 16 24 32 40 48 56 64 72 80 88 96 
9 18 27 36 45 54 63 72 81 90 99 108 
10 20 30 40 50 60 70 80 90 100 110 120 
11 22 33 44 55 66 77 88 99 110 121 132 
12 24 36 48 60 72 84 96 108 120 132 144 

如何右對齊的數字?

+3

你可以看看printf和使用百分比修飾符墊你的代碼。 printf(「%10d」,yourNumber); – LeatherFace 2014-10-27 18:58:09

回答

0

正如您在問題標題中所說的那樣,您使用printf()。像,

for (int i = 1; i <= NUMBER_OF_TABLES; i++) { 
    for (int j = 1; j <= NUMBER_OF_TIMES; j++) { 
     System.out.printf("%6d", i * j); 
    } 
    System.out.println(); 
} 

凡6是寬度和Formatter的Javadoc描述寬度作爲

寬度

寬度是要被寫入的最小字符數輸出。對於行分隔符轉換,寬度不適用;如果提供,則會拋出異常。

而且

'd' ...將參數格式化爲十進制整數。

0

要打印數量爲右對齊你可以使用 System.out.printf( 「%ND」,X); 其中n是最小寬度,x是要打印的整數。

現在對於你的問題回答,您可以使用下面的代碼

for(int i=1; i<= NUMBER_OF_TABLES; i++) 
    { 
     int j=1; 
     System.out.print(i*j++); 
     for(; j<= NUMBER_OF_TIMES; j++) 
     { 
      System.out.printf("%4d",j*i); 
     } 
     System.out.println(""); 
    }