使用for循环Java创建一个打印方法

时间:2014-11-10 15:36:41

标签: java

练习的任务是创建一个像Example一样的方法。(我们必须使用for循环。但是如果你知道如何以另一种方式进行,那么它也会非常有趣。)输入数字可以是任何

示例: 输入: 3 输出

**1** 
*121*  
12321
*121*
**1**

我的例子:

public static void main(String[] args) {

    printMatrix(5);


}
public static void printMatrix (int n) {

    int d = n +(n-1);

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

我的输出:

****1****
***121***
**12321**
*1234321* 
123454321

我无法进行下一步,将其颠倒过来。任何人都有想法?

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题,但我认为这不是一个完美的解决方案。有没有人有另一种方法来解决这个问题?

public static void main(String[] args) {

        printMatrix(5);


    }
    public static void printMatrix (int n) {

        int d = n +(n-1);
        int k = n*2;
        int g = -1;

        for (int i = 0; i < d ; i++)
        {
            if(i<n){
                g++;
            }
            else{k=n*2;
                g--;}

            for(int j = 1; j <=d; j++){
                if (i < n){
                int abs = Math.abs(j-n);
                System.out.print(abs>i ? "*" : i-abs+1);
                }
                else{
                    k--;
                    int abs = Math.abs(k-n);
                    System.out.print(abs>g ? "*" : g-abs+1);

                }

            }
            System.out.println("");
        }

    }
}

<强>输出:

****1****
***121***
**12321**
*1234321*
123454321
*1234321*
**12321**
***121***
****1****