public class ProgramSummary{
public static void main(String[] args){
final int[][] timesTable = new int[12][];
for (int i = 0; i < 12; i++) {//First start
int[] row = new int[12];
for (int j = 0; j < 12; j++) {
row[j] = (i + 1) * (j + 1);
}
timesTable[i] = row;
}
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 12; j++) {
System.out.printf("%4d", timesTable[i][j]);
}
System.out.println();
}
System.out.println();//First end
for (int i = 0; i < 12; i++) { //second start
for (int j = 0; j <= i; j++) {
System.out.printf("%4d", timesTable[i][j]);
}
System.out.println();
}//second end
System.out.println();
for (int i = 1; i <= 12; i++) {//third start
for (int j = 1; j <= 12 - i + 1; j++) {
System.out.printf("%4d", timesTable[i-1][j-1]);
}
System.out.println();
}//third end
System.out.println();
for (int i = 0; i < 12; i++) {//Fourth start
for (int j = 12; j > i; j--) {
System.out.printf("%4d", timesTable[i][j-1]);
}
System.out.println();
}//Fourth end
System.out.println();
for (int i = 0; i < 12; i++) {
for (int j = 12; j >= timesTable.length - i; j--) {
System.out.printf("%4d", timesTable[i-1][j]);
}
System.out.println();
}
}
}
我无法让它输出我想要的内容。我的目标是让第五个嵌套循环以精确的空格输出。其余的代码都很好。
我已经尝试过上面的代码,但完全不知道如何按照我想要的方式格式化它。同样,只有第五个嵌套循环是我遇到问题的地方。谢谢
目标输出:
12
24 22
36 33 30
48 44 40 36
60 55 50 45 40
72 66 60 54 48 42
84 77 70 63 56 49 42
96 88 80 72 64 56 48 40
108 99 90 81 72 63 54 45 36
120 110 100 90 80 70 60 50 40 30
132 121 110 99 88 77 66 55 44 33 22
144 132 120 108 96 84 72 60 48 36 24 12
format
类的String
方法会将数字格式化为特定长度。
这是为
format
方法创建动态格式化程序的示例。 main 方法的前四行显示了如何执行此操作。此代码适用于您不知道数字最大大小的任何情况。
public class WeirdTimesTable {
public static void main(String[] args) {
int maxValue = 12;
int maxProduct = maxValue * maxValue;
int length = Integer.toString(maxProduct).length() + 1;
String formatter = "%" + length + "d";
for (int multiplier = 1; multiplier <= maxValue; multiplier++) {
for (int index = 0; index < maxValue; index++) {
int value = maxValue - index;
int product = multiplier * value;
if (index < multiplier) {
System.out.print(String.format(formatter, product));
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
测试结果
12
24 22
36 33 30
48 44 40 36
60 55 50 45 40
72 66 60 54 48 42
84 77 70 63 56 49 42
96 88 80 72 64 56 48 40
108 99 90 81 72 63 54 45 36
120 110 100 90 80 70 60 50 40 30
132 121 110 99 88 77 66 55 44 33 22
144 132 120 108 96 84 72 60 48 36 24 12