java中的图案打印

时间:2016-05-29 09:25:15

标签: java loops for-loop

我想在java中打印模式,如:

模式1:

  

1
2 6
3 7 10
4 8 11 13
5 9 12 14 15   

模式2:

  

1
3 2
4 5 6
10 9 8 7
11 12 13 14 15
21 20 19 18 17 16

但是我没有得到它,并且非常感谢对算法的任何帮助。提前谢谢,当然感谢stackoverflow。

2 个答案:

答案 0 :(得分:1)

你在这里。这是您的第一个模式的程序: -

public class PrintPattern1 {
    public static void main(String[] args) {
        int i=0;
        int j=0;
        int k=0;
        int l=4;

        for(i=1;i<6;i++){
            System.out.println();
            k=i;
            l=4;
            for(j=1;j<=i;j++){
                System.out.print(" "+k);
                k=k+l;
                l=l-1;
            }
        }
        System.out.println();
    }
}

这是第二种模式的程序: -

public class PrintPattern2 {
    public static void main(String[] args) {
        int i=0;
        int j=0;
        int k=0;
        int l=1;

        for(i=1;i<7;i++){
            System.out.println();
            if(i%2==0){
                k=l+i-1;
                for(j=1;j<=i;j++){
                    System.out.print(" "+k);
                    k=k-1;
                    l=l+1;
                }
            }else{
                k=l;
                for(j=1;j<=i;j++){
                    System.out.print(" "+k);
                    k=k+1;
                    l=l+1;
               }
            }
        }
        System.out.println();
    }
}

不要忘记点击左上角的右边标记来接受我的回答。快乐编码:)

答案 1 :(得分:0)

第一个模式似乎有一个固定的长度。第二个可以无限期地继续下去。此代码生成它们:

    int lineCount = 5;
    for (int i = 1; i <= lineCount; ++i) { //
        int n = i;
        for (int j = 1; j <= i; ++j) {
            System.out.print(n + " ");
            n += (lineCount - j);
        }
        System.out.println();
    }


    boolean direction = true; //true for increasing order
    int lineLength = 1;
    int currentStartingPoint = 1;
    while(true) {
        if(direction) {
            for (int i = 0; i < lineLength; ++i) {
                System.out.print(currentStartingPoint + i + " ");
            }
            currentStartingPoint += lineLength++;
        }
        else {
            for (int i = currentStartingPoint + lineLength - 1; i >= currentStartingPoint; --i) {
                System.out.print(i + " ");
            }
            currentStartingPoint += lineLength++;
        }

        direction = !direction;
        System.out.println();
    }