我需要使用for循环创建它。
输出
我的代码在这里:
public class Assign01 {
public static void main(String[] args) {
int n, i = 0, k;
for (n = 1; n <= 5; n++) {
for (i = 1; i <= n; i++) {
System.out.print(+i + "\t");
}
System.out.print("\n");
}
}
}
这就是输出。
输出
答案 0 :(得分:1)
在向上方向前以相反方向运行for循环。
public class Assign01 {
public static void main(String[] args) {
int n, i = 0, k;
int maxN = 5;
for (n = 1; n <= maxN; n++) {
// below prints the tabs to pad the line.
// this prints a tab (maxN - n) times.
for(k = n; k < maxN; k++) {
System.out.print("\t");
}
// below prints the number starting from the biggest, till the lowest
// I use > 1 instead of >= 1 because you don't want to duplicate 1 twice.
for (i = n; i > 1; i--) {
System.out.print(i + "\t");
}
for (i = 1; i <= n; i++) {
System.out.print(i + "\t");
}
System.out.print("\n");
}
}
}
输出(我的本地测试):
1
2 1 2
3 2 1 2 3
4 3 2 1 2 3 4
5 4 3 2 1 2 3 4 5
答案 1 :(得分:1)
您目前看到的内容非常类似于预期输出的右侧。所以你需要做的就是填写左侧。左侧恰好是右侧的反面,让我们看看我们如何能够反转内部的循环:
for (i = n; i >= 1; i--) {
System.out.print(+i + "\t");
}
现在,如果您使用该代码并将其添加到当前内部for循环之上,那么您将获得非常接近答案的内容。您需要做的就是弄清楚如何删除中间的重复数字,并添加任何所需空格以填充左侧并创建金字塔形状。
答案 2 :(得分:0)
public class Assign01 {
public static final int MIN = 1;
public static final int MAX = 5;
public static void main(String[] args) {
for(int j = MIN; j <= MAX; j++) {
for(int i = MIN, k = MAX; i <= MIN + 2*(MAX-MIN); i++) {
if(k <= j) {
System.out.print("" + k + " ");
} else {
System.out.print(" ");
}
if(i < MAX) {
k--;
} else {
k++;
}
}
System.out.println("");
}
}
}
打印:
1
2 1 2
3 2 1 2 3
4 3 2 1 2 3 4
5 4 3 2 1 2 3 4 5
例如这个
public static final int MIN = 3;
public static final int MAX = 9;
打印
3
4 3 4
5 4 3 4 5
6 5 4 3 4 5 6
7 6 5 4 3 4 5 6 7
8 7 6 5 4 3 4 5 6 7 8
9 8 7 6 5 4 3 4 5 6 7 8 9
考虑到我已经解决了这项任务,你的工作就是找出我在这里所做的事情。这是一个更有趣的任务,不是吗? :)