2013-10-18 33 views
0

我需要這個程序打印出乘法表多達10 * 10完美的表。我可以把它打印出來的一切,我只是不知道如何讓一切都行正確。任何幫助表示讚賞!如何使一個2維數組行中的所有元素成用printf -Java

public class multTable 
{ 
    private static final int TABLE_SIZE = 10; 
    public static void main(String[] args) 
    { 
     int table[][] = new int[TABLE_SIZE][TABLE_SIZE]; 
     for (int r=1; r<=10; r++) 
     { 
      for (int c=1; c<=10; c++) 
      { 
       System.out.printf(" "+r*c); 
      } 
      System.out.println(); 
     } 
    } 
} 

這是它打印出:

1 2 3 4 5 6 7 8 9 10 
2 4 6 8 10 12 14 16 18 20 
3 6 9 12 15 18 21 24 27 30 
4 8 12 16 20 24 28 32 36 40 
5 10 15 20 25 30 35 40 45 50 
6 12 18 24 30 36 42 48 54 60 
7 14 21 28 35 42 49 56 63 70 
8 16 24 32 40 48 56 64 72 80 
9 18 27 36 45 54 63 72 81 90 
10 20 30 40 50 60 70 80 90 100 
+0

@nachokk是的,我添加了它打印的問題。 – gdhc21

回答

1

使用StringUtils.rightPad

System.out.printf(" "+ StringUtils.rightPad(String.valueOf(r*c),3)); 

,而不是

System.out.printf(" "+r*c); 

創建自己的rightPad方法

private static String rightPad(String value, int length) 
    { 
     int size = value.length(); 
     if (size == length) 
     { 
      return value; 
     } 
     else if (size > length) 
     { 
      return value.substring(0, length); 
     } 
     else 
     { 
      StringBuilder stringBuilder = new StringBuilder(); 
      length = length - size; 
      stringBuilder.append(value); 
      for (int i = 0; i < length; i++) 
      { 
       stringBuilder.append(" "); 
      } 
      return stringBuilder.toString(); 
     } 
    } 

代替這裏面的for循環

System.out.format(" " + rightPad(String.valueOf((r * c)), 4)); // you may give any value you like 2,3,4,5...etc for length 

輸出:

1 2 3 4 5 6 7 8 9 10 
2 4 6 8 10 12 14 16 18 20 
3 6 9 12 15 18 21 24 27 30 
4 8 12 16 20 24 28 32 36 40 
5 10 15 20 25 30 35 40 45 50 
6 12 18 24 30 36 42 48 54 60 
7 14 21 28 35 42 49 56 63 70 
8 16 24 32 40 48 56 64 72 80 
9 18 27 36 45 54 63 72 81 90 
10 20 30 40 50 60 70 80 90 100 
+0

我的教練希望我們雖然用printf,謝謝! – gdhc21

+0

它打印出這個錯誤: – gdhc21

+0

multTable.java:19:錯誤:找不到符號 System.out.printf(「」+ StringUtils.rightPad(String.valueOf(r * c),3)); ^ 符號:變量StringUtils的 位置:類multTable 1錯誤 – gdhc21

1

使用標籤作爲分隔符

System.out.printf(r*c+"\t"); // \t stands for tab 

那麼你可以得到很好表格輸出像

1 2 3 4 5 6 7 8 9 10 
2 4 6 8 10 12 14 16 18 20 
3 6 9 12 15 18 21 24 27 30 
4 8 12 16 20 24 28 32 36 40 
5 10 15 20 25 30 35 40 45 50 
6 12 18 24 30 36 42 48 54 60 
7 14 21 28 35 42 49 56 63 70 
8 16 24 32 40 48 56 64 72 80 
9 18 27 36 45 54 63 72 81 90 
10 20 30 40 50 60 70 80 90 100 
+0

這個精美的作品!謝謝! – gdhc21

0

如果您打算仍然使用(C風格)的printf,你可以用它來確保它們都是由3位右對齊:

System.out.printf("%3d ", r*c); 
相關問題