java简单打印菱形

      **java打印菱形的几张方法**

第一种方法有个小bug多打印了一行空白

行数设定的是5行

public class qum
{
	public static void main(String[] args){		
		System.out.println("打印菱形");
		System.out.println("方法一");
		int h=5;
		for(int i=1;i<=h;i++){
			for(int j=1;j<=h-i;j++){
				System.out.print(" ");}
				for(int k=1;k<=2*i-1;k++){
					System.out.print("*");
			}
			System.out.println();
		}
		for(int i=h-1;i>=0;i--){
			for(int j=1;j<=h-i;j++){
				System.out.print(" ");}
			for(int k=1;k<=2*i-1;k++){
				System.out.print("*");
			}
			System.out.println();
		}
		
		
		
		System.out.println("方法②");
		int n=5;
		//前10行.上半部分
		for(int i=1;i<=n;i++){//控制行数
			for(int k=n-1;k>=i;k--){//打印空格
				System.out.print(" ");}
			for(int j=1;j<=2*i-1;j++){//打印*
				System.out.print("*");}
			System.out.println();}
		//后9行,下半部分
		for(int i=n-1;i>=1;i--){
			for(int k=i;k<=n-1;k++){
				System.out.print(" ");}
			for(int j=1;j<=2*i-1;j++){
				System.out.print("*");}
			System.out.println();}
	
			
			
			
			System.out.println("方法三");
		//菱形看成上下两部分,上五下四,所以,第一个for循环有5次,第二个for循环有4次
        for( int i = 1; i <= 5; i++){
            //将空格和*分开看,看" "的变化i=1时,它是4,2的时候是3,找规律
            for( int j = 1; j <= 5-i ; j++){
                System.out.print(" ");}
            for( int k = 1; k <= 2*i-1 ; k++){//找规律,i是 1 3 5 7 9基数
                System.out.print('*');}
			//换一行
			System.out.println();}
        for( int i = 1; i <= 4; i++){
            for( int j = 1;j <= i; j++){//空格 1 2 3 4 so 
                System.out.print(" ");}
            for( int k = 1; k <= 2*(4 - i + 1 )-1; k++){//* 7 5 3 1 倒着来的基数
                System.out.print('*');
            }
			System.out.println();
        }
		
		
			
		System.out.println("方法四 这个方法是某个大佬的 觉得不错特意复制上来给你们借鉴借鉴");
		for (int i = 0; i < 9; i++) {//行     9是菱形的高度
            for (int j = 0; j < Math.abs(4-i); j++) {//空格   Math.abs绝对值
                System.out.print(" ");
            }
            for (int j = 0; j < 9 - 2 * Math.abs(i - 4); j++) {//打印星星
                System.out.print("*");
            }
            System.out.println();//换行
        }
				
		
				
			System.out.println("方法五 这个方法是别人的方法");
		for(int i = 1; i <= n; i++){
			/*
			 * 先打印空格:
			 * 	第一行打印4个空格
			 * 	第二行打印3个空格
			 * 	第三行打印2个空格
			 * 	...
			 * 总结出规律:每行打印 ( 总行数 - 当前行数  )个空格
			 */
			for(int j = 1; j <= n-i; j++){
				System.out.print(" ");
			}

			/*
			 * 再打印#:
			 * 	第一行打印1个
			 * 	第二行打印3个
			 * 	第三行打印5个
			 * 	...
			 * 总结出规律:每行打印   (2*当前行数  - 1)个#
			 */
			for(int k = 1; k <= 2*i-1; k++){
				System.out.print("#");
			}
			//每行打印完毕换行
			System.out.println();
		}
		//打印下半部分等腰三角形
		//下半部分等腰三角形要比上半部分的少一行
		for(int i = 1; i < n; i++){
			/*
			 * 先打印空格:
			 * 	第一行打印1个空格
			 * 	第二行打印2个空格
			 * 	第三行打印3个空格
			 * 	...
			 * 总结出规律:每行打印 ( 当前行数  )个空格
			 */
			for(int j = 1; j <= i; j++){
				System.out.print(" ");
			}
			/*
			 * 再打印#:
			 * 	第一行打印7个
			 * 	第二行打印5个
			 * 	第三行打印3个
			 * 	...
			 * 总结出规律:每行打印   (2*(总行数-当前行数)  - 1)个#
			 */
			for(int k = 1; k <= 2*(n-i)-1; k++){
				System.out.print("#");
			}
			//每行打印完毕换行
			System.out.println();
		}

		
		
	}
}

方法不止一种
当然还有许多不一样的方法
也许还有比这更简单的代码也许也有更复杂的
但是都能实现效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值