以下程序打印用户给出N的乘法表9xN。我的细胞被固定,只有当产品长2个时才对齐。
我可以做什么,以便细胞与任何大小的数字对齐?
public static void main(String[] args) {
//Reading the number n.
System.out.print("Give a number: ");
int n = StdIn.readInt();
//Validating the number.
while(n<1) {
System.out.println("Please give a number greater or equal to 1");
n = StdIn.readInt();
}
/*---------------------------------
*
*Lines 27-36 -> Creating the first
*line and the first line's design.
*
----------------------------------*/
for (int i = 1; i <= n; i++) {
System.out.printf(" %-4d", i);
}
System.out.println();
System.out.print(" +");
for (int i = 1; i <= n; i++) {
System.out.print("-------+");
}
System.out.println();
/*----------------------------------
*
*Lines 45-58 -> Printing the product
*of the numbers and the design of
*the table.
*
----------------------------------*/
for (int i = 1; i <=9 ; i++) {
System.out.print(i + " | ");
for (int j = 1; j <= n; j++) {
int a = (i * j);
String b = " | ";
System.out.printf("%2d %s", a, b);
}
System.out.println();
System.out.print(" +");
for (int k = 1; k <= n; k++) {
System.out.print("-------+");
}
System.out.println();
}
}
}
我可以做什么,以便细胞与任何大小的数字对齐?
提前致谢。
答案 0 :(得分:0)
要稍微扩展@Thomas Weller的注释,您需要将表格单元格值计算循环与表格打印循环分开,因为在开始打印之前需要知道任何单元格中的最大位数。表格,因此%2d
中的2可以是最大值。
编辑:你还需要知道最大值才能创建正确的单元格宽度而不是硬编码"-------+"