我想要输出如下所示 任何人都可以建议我如何编写该程序,尝试了很多但没有得到预期的
1
2 * 3
4 * 5 * 6
7 * 8 * 9 * 10
7 * 8 * 9 * 10
4 * 5 * 6
2 * 3
1
这是我试过的程序
public class Triangle_program2 {
public static void main(String[] args) {
int end=4;
int i,j,num=1;
for(i=0;i<end;i++)
{
for(j=0;j<=i;j++)
{
System.out.print(num+ " ");
num++;
}
System.out.println();
}
num=num-1;
for(i = end; i >= 1; --i)
{
for(j = 1; j <= i; ++j)
{
System.out.print(num+ " ");
num--;
}
System.out.println();
}
}
}
这是我得到的结果
1
2 3
4 5 6
7 8 9 10
10 9 8 7
6 5 4
3 2
1
答案 0 :(得分:1)
我们需要专注于印刷的过渡
7 8 9 10
10 9 8 7
以下解决方案适用于对循环逻辑的修改,以根据代码中金字塔的级别递减计数器:
public class MyClass {
public static void main(String args[]) {
int end=4;
int i,j,num=1;
for(i=0;i<end;i++)
{
for(j=0;j<=i;j++)
{
System.out.print(num+ " ");
num++;
}
System.out.println();
}
for(i = end; i >= 1; --i)
{
num-=i;
for(j = 1; j <= i; ++j)
{
System.out.print(num + " ");
num++;
}
num-=i;
System.out.println();
}
}
}
答案 1 :(得分:0)
一个很好的解决方案是让内部循环始终从num转到num + i(在两种情况下)。我认为这使代码更容易理解,程序的两个部分看起来很相似。
public static void main(String[] args) {
int end=4;
int i,j,num=1;
for(i=0;i<end;i++)
{
for(j=num;j<=num+i;j++)
{
System.out.print(j+" ");
}
num=j;
System.out.println();
}
for(i = end; i >= 1; --i)
{
num=num-i;
for(j=num;j<num+i;j++)
{
System.out.print(j+" ");
}
System.out.println();
}
}
唯一的区别是在快速部分你去了num = num + i;在第二部分你去num = num-i;循环外有一个num = num + i来正确计算而不在循环中添加检查;