我需要java金字塔代码的帮助

时间:2017-01-18 05:04:21

标签: java

我需要帮助

1****** 
12***** 
123**** 
1234*** 
12345** 
123456* 
1234567

使用3 for循环,这将完成。 我试过这个

public class Pattren {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        int i,j,k;
        for (i = 1; i <= 7; i++)
        {
            for (j = 1; j <= i; ++j)
            {

                    System.out.print((j)+("\n"));

                for (k = 7 - i; k >= 1; k--)
                {
                    System.out.print("* ");

                }
            }
        }           
    }
}

但它存在一些逻辑问题。我需要改进代码。 我得到了这个输出。

1
* * * * * * 1
* * * * * 2
* * * * * 1
* * * * 2
* * * * 3
* * * * 1
* * * 2
* * * 3
* * * 4
* * * 1
* * 2
* * 3
* * 4
* * 5
* * 1
* 2
* 3
* 4
* 5
* 6
* 1
2
3
4
5
6
7

2 个答案:

答案 0 :(得分:0)

更简单的版本是

    int i,j;
    for (i = 1; i <= 7; i++)
    {
        for (j = 1; j <= 7; ++j)
        {
            if (j <= i) {
                System.out.print(j);
            }
            else {
                System.out.print("*");
            }
        }
        System.out.println();
    }   

<强>输出

1******
12*****
123****
1234***
12345**
123456*
1234567

答案 1 :(得分:0)

以下是一个代码行数少得多的解决方案:

public static void main(String[] args) {
    StringBuilder sb = new StringBuilder();
    String s = "";
    for(int i=1; i<=7; i++){
        s += i;
        sb.append(String.format("%-7s", s).replace(" ", "*")).append("\n");
    }
    System.out.println(sb.toString());
}