Java 输出三角形

普通直角三角形

思路

  • 第一行1个,第二行2个,第三行3个,一此内推,第n行比第n-1行多一个,要有两个循环语句,第一个循环代表行数,第二次循环画出三角形的轮廓,第一行画一个,第二行画两个,总之画出的图形要小于等于行数。

代码

public class dome2{
	public static void main(String[] args) {
		for(int i=1;i<=5;i++) {    //代表行
			for(int j=1;j<=i;j++) {   //代表列,画出图形
				System.out.print("*");
			}
			System.out.println();  //换行
		}
	}
}

答案
*
**
***
****
*****

等腰直角三角形

思路

  • 跟直角三角形的排列方式差不多,总比前一行多一个,等腰三角形的左边有一个空倒立的三角形,专门为等腰三角形导出形状,需要三个循环语句,一个循环最左边空形状倒立的三角形,把等腰三角形分成两个直角三角形,第二个循环左边的直角三角形,第三个循环右边的直角三角形。

代码

public class dome2{
	public static void main(String[] args) {
		for(int i=1;i<=7;i++) {    //一共7行
			for(int j=6;j>=i;j--) { 
				System.out.print(" "); //左边的空倒立三角形
			}
			for(int j=2;j<=i;j++) {
				System.out.print("*");  //左边被分割的直角三角形
			}
			for(int j=1;j<=i;j++) {
				System.out.print("*"); //右边的被分割直角三角形
			}
		  System.out.println();
		}
	}
}

答案

      *
     ***
    *****
   *******
  *********
 ***********
*************

杨辉三角形

思路

  • 每行前面都有空格,并且每一行空格都在缩小,这需要根据行数来判断,每一行中间的数值是与前一行对齐相邻中间数的和,可以根据前面的值来算出。

代码

public class dome2{
	public static void main(String[] args) {
		    play(5);
		
	}
	public static void play(int row) {   
	    for (int i = 1; i <= row; i++) {    //输出行数
	        for (int j =1; j<=row-i; j++) {    //输出左边空格的形状
	            System.out.print(" ");
	        }
	        for (int j = 1; j <= i; j++) {    //调用nve函数输出三角形
	            System.out.print(nve(i, j) + " ");
	        }
	        System.out.println();    //换行
	    }
	}
	public static int nve(int x, int y) {
	    if (y == 1 || y == x) {
	        return 1;
	    }
	    int c = nve(x - 1, y - 1) + nve(x - 1, y);
	    return c;
	}
}
    1 
   1 1 
  1 2 1 
 1 3 3 1 
1 4 6 4 1 

空三角形

思路

  • 与上面的杨辉三角形差不多,只是边上才有图,中间的算法直接省去,改成空字符串。

代码

public class dome2{
	public static void main(String[] args) {
		    play(6);
		
	}
	public static void play(int row) {   
	    for (int i = 1; i <= row; i++) {    //输出行数
	        for (int j =1; j<=row-i; j++) {    //输出左边空格的形状
	            System.out.print(" ");
	        }
	        for (int j = 1; j <= i; j++) {    //调用nve函数输出三角形
	            System.out.print(nve(i,j,row) + " ");
	        }
	        System.out.println();    //换行
	    }
	}
	public static String nve(int x,int y,int tt) {
		if((y==1||y==x)&&x!=tt) {  //在第一列和最后一列输出,最后一样必须全部输出
			return "*";
		}else if(x==tt) {  //最后一行全部输出
			return "*";
		}else {
			return " ";
		}
	}
}
     * 
    * * 
   *   * 
  *     * 
 *       * 
* * * * * * 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值