使用Java打印三角形(半金字塔)图案

Luz*_*ral 3 java geometry

我必须打印一个三角形图案(半金字塔)

1
0 1
1 0 1
0 1 0 1
Run Code Online (Sandbox Code Playgroud)

我试过这个程序

class tri{
 public static void main(String arg[]){
    int i,j,a = 1, b =0, c=0;
    for(i=1; i<=4; i++){

        for(j=1; j<=i; j++){
            System.out.print(a+ " ");
            c = a;
            a = b;
            b = c;              
        }
        System.out.println();
    }
 }
}
Run Code Online (Sandbox Code Playgroud)

但是这会打印出图像所示的图案

输出上述代码

如果有人可以帮我编辑代码来引入模式

suj*_*hvm 5

您需要正确设置起始值.因为你正在做的是不断交换

说第二行 0 1

最后一个元素= 1,(a = 1, b = 0)并交换(a = 0, b = 1)下一行第一个元素.

然而这是不正确的,因为它应该从以前的状态开始(a = 1)而不是(a = 0)从之前的状态.

        int i,j,a = 1, b =0, c=0;
        for (i = 1; i <= 4; i++){
            if (i % 2 == 0) {
                a = 0;
                b = 1;          
            } else {
                a = 1;
                b = 0;          
            } 
            for(j=1; j<=i; j++) {
                System.out.print(a+ " ");
                c = a; 
                a = b;
                b = c;                           
            }           
            System.out.println();
        }
Run Code Online (Sandbox Code Playgroud)

您还可以在XOR 之间切换01使用XOR:

int i, j, a = 1;
for (i = 1; i <= 4; i++){
    a = i % 2;          
    for(j=1; j<=i; j++) {
        System.out.print(a+ " ");
        a = a ^ 1;                         
    }           
    System.out.println();
}
Run Code Online (Sandbox Code Playgroud)

然而,更短的解决方案是:

String str = "";
for (int i = 1; i <= 4; i++) {
    str = (i % 2) + " " + str;  
    System.out.println(str);    
} 
Run Code Online (Sandbox Code Playgroud)

输出:

1 
0 1 
1 0 1 
0 1 0 1 
Run Code Online (Sandbox Code Playgroud)


小智 5

最短的将是

String str = "";
for (int i = 1; i <= 4; i++) {
    str = (i % 2) + " " + str;  
    System.out.println(str);    
} 
Run Code Online (Sandbox Code Playgroud)

这将根据需要提供输出

1
0 1
1 0 1
0 1 0 1
Run Code Online (Sandbox Code Playgroud)