金字塔程序在java中使用数字并以相反的顺序打印

时间:2018-06-11 09:51:08

标签: java arrays

我想要输出如下所示 任何人都可以建议我如何编写该程序,尝试了很多但没有得到预期的

  

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

2 个答案:

答案 0 :(得分:1)

我们需要专注于印刷的过渡

  

7 8 9 10

     

10 9 8 7

Demo

以下解决方案适用于对循环逻辑的修改,以根据代码中金字塔的级别递减计数器:

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来正确计算而不在循环中添加检查;

Demo