我怎样才能做出同样的三角形,但有偶数和空格?如何才能生成不受任何限制的偶数,并适应用户输入的行数(用户只输入行数,而不限制生成偶数或奇数)
int num = 5;
int cont = 0;
for (int i = 1; i <= num; i ++) {
cont + = 2;
for (int j = 0; j <num-i; j ++) {
System.out.print ("");
}
for (int k = i; k <cont; k ++) {
System.out.print (k);
}
for (int l = i; l <cont-1; l ++) {
System.out.print (l);
}
System.out.println ("");
}
此程序的运行方式为:
1
232
34543
4567654
567898765
我想要的,但他怎么能做到呢?
2
4 6
8 10 12
14 16 18 20
发布于 2018-10-21 02:14:10
如果我没理解错的话,这很简单,但是在数字5之后,数字将会彼此相连,所以如果你想避免这种情况,你必须为你打印的每个数字使用2到3个空格。可以使用以下命令创建主三角形:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int row = in.nextInt();
int allSpace = 2 * row - 1;
for (int i = 1; i <= row; i++) {
int allNumber = 2 * i - 1;
for (int j = 0; j < (allSpace - allNumber) / 2; j++) {
System.out.print(" ");
}
for (int j = 1; j <= allNumber ; j++) {
System.out.printf("%3d", j);
}
for (int j = allNumber - 1; j >= i ; j--) {
System.out.printf("%3d", j);
}
System.out.println();
}
}
但是对于偶数,你可以这样做:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int row = in.nextInt();
int allSpace = 2 * row - 1;
int even = 2;
for (int i = 1; i <= row; i++) {
int allNumber = 2 * i - 1;
for (int j = 0; j < (allSpace - allNumber) / 2; j++) {
System.out.print(" ");
}
for (int j = 1; j <= allNumber ; j++) {
System.out.printf("%3d", even);
even += 2;
}
System.out.println();
}
}
我没弄错吧?
发布于 2018-10-21 02:16:59
这有点棘手,因为数字的数量会稍微影响对齐。
这将会起作用:
int num = 5;
int cont = 0;
for (int i = 1; i <= num; i++) {
for(int k = 1; k <= num -i; k++) System.out.print(" ");
for(int j = 1; j <= i; j++) {
cont += 2;
System.out.print(cont + " ");
}
System.out.println ("");
}
https://stackoverflow.com/questions/52908548
复制相似问题