如何制作数字三角形java

时间:2015-09-16 18:01:14

标签: java

我需要生成如图所示的三角形:

***4
**34
*234
1234

我的代码是:

for(int i=3; i>0 ;i--)
    for(int j=0; j < i; j++){
        System.out.print("*");
    }
    for(int s3 = 5; s3 >= 0; s3 -- ){
        for ( int n2 = s3  + 1; n2 <= 4; n2 ++){                                             
           System.out.print(n2);
        }
        System.out.println();
    }
}

给了我这个:

***

4
34
234
1234
**

4
34
234
1234
*

4
34
234
1234

有人可以帮我吗?

6 个答案:

答案 0 :(得分:2)

就这样做:

        for(int i=3; i>=0 ;i--) {
            for(int j=0; j < i; j++) {
                System.out.print("*");
            }
            for ( int k = i+1; k < 5; k++ ) {
                System.out.print(k);
            }
            System.out.println();
        }

你只需要一个外环和2个内环。外环从3计数到0(此线的星数)。第一个内环打印出许多恒星。第二个用数字填充其余部分。

请注意,无论你是从3开始还是从4开始,然后使用+1或不使用-1和不使用-1都不重要。此外,第一个循环计数向前还是向后都不重要。

我刚从3开始,因为我发现如果我是该行中的星数,我会更容易理解。我在第一个循环中向前计数(从0到i-1),只是因为我自己发现在这个方向上计算比在反向计算中更直观。

答案 1 :(得分:0)

使用两级嵌套循环实现它。

for(int i=4;i>0;i--){
     for(int j=i-1;j>0;j--){
         System.out.print("*");
     }
     System.out.print(i);
     for(int k =i+1;k<=4;k++){
         System.out.print(k);
     }
     System.out.println();
 }

答案 2 :(得分:0)

final int NUM = 4;
for (int i = NUM; i >= 1; i--) {
    for (int star = 1; star < i; star++) {
        System.out.print("*");
    }
    for (int j = i; j <= NUM; j++) {
        System.out.print(j);
    }
    System.out.println();
}

答案 3 :(得分:0)

试试这个

for(int i=4; i>0; i--){
    for(int j=i-1; j>0; j--){
        System.out.print("*");
    }
    System.out.print(i);
    for(int k=i+1; k<=4; k++){
        System.out.print(k);
    }
    System.out.println();
}

答案 4 :(得分:0)

实际上我刚刚想到为什么我们甚至使用嵌套循环来解决这样的问题,尤其是在绘制像

这样的东西时
*
**
***
****

为什么我们不能像以下那样建立字符串:

    StringBuilder stars = new StringBuilder("****");
    for (int i = 3; i >= 0; --i) {
        stars.setCharAt(i, (char) (i + 49));
        System.out.println(stars);
    }

顺便说一句,上面的代码只有在9星或更少星的情况下才会起作用,但我只是想到你可以使用和练习的新想法:)

答案 5 :(得分:0)

你可以试试这个:

    int valeur=5;
    for(int i=valeur; i>0 ;i--) {
        for (int j=1;j<=valeur;j++) {
            System.out.print(j<i?"*":(j+""));
        }
        System.out.println("");
    }