Reputation: 11
I was wondering how I could align this code properly? So that it could look more like a table. In the output, the numbers start shifted to the right and I do not know how to fix it
public class MultiplicationTable {
int[][] arr = new int[13][13];
public void initializeBoard()
{
for(int i = 1; i < 13; i ++)
{
for(int j = 1; j < 13; j++)
{
arr[i][j] = i * j;
}
}
}
public void printBoard()
{
for(int i = 1; i < 13; i ++)
{
for(int j = 1; j < 13; j++)
{
System.out.print(arr[i][j] +" ");
}
System.out.println();
}
}
}
Upvotes: 1
Views: 49
Reputation: 748
You have done it almost correctly. I believe with a smaller change in your printBoard()
method like this should make the out put correctly
public static void printBoard()
{
for(int i = 1; i < 13; i ++)
{
for(int j = 1; j < 13; j++)
{
if(arr[i][j] >= 100){
System.out.print(arr[i][j] +" ");
} else if(arr[i][j] >= 10){
System.out.print(arr[i][j] +" ");
} else {
System.out.print(arr[i][j] +" ");
}
}
System.out.println();
}
}
And I got the output like this
I hope this helps.
Upvotes: 1
Reputation: 9192
Use the Scanner#printf() method to display formatted text within the Console window, for example:
public void printBoard() {
for (int i = 1; i < 13; i++) {
for (int j = 1; j < 13; j++) {
System.out.printf("%-6s", arr[i][j]);
}
System.out.println();
}
}
The Console should display:
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
Upvotes: 1