Java菱形

 

 

打印实心菱形

思想:把实心菱形看出两部分,一部分是由一个正三角形构成,一部分由一个倒三角构成 

法一: 

import java.util.Scanner;

public class M {
	public static void drawDiamond(int size) {
		// *
		// ***
		// *****
		for (int i = 1; i <= size; i++) {
			for (int j = 1; j <= size - i + 1; j++) {
				System.out.print(" ");
			}
			for (int j = 1; j <= 2 * i - 1; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}

	// 倒三角
	public static void drawDiamond1(int size) {
		// ***
		// *
		for (int i = size; i >= 1; i--) {
			for (int j = size - i; j >= 1; j--) {
				System.out.print(" ");
			}
			for (int j = 2 * i - 1; j >= 1; j--) {
				System.out.print("*");
			}
			System.out.println();
		}
	}

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		// 打印实心
		Scanner in = new Scanner(System.in);
		System.out.println("因为菱形的特殊性质,所以请输入奇数:");
		int size = in.nextInt();// 菱形的高度
		drawDiamond(size / 2);
		// System.out.println("---------------------");
		drawDiamond1(size / 2 + 1);
	}

}

 

 

空心菱形

在实心菱形的基础上,把每一行看出两部分,一部分是开始打印*之前的空格,一部分是打印*以及空格

简单一点的:

import java.util.Scanner;

public class L {
	public static void drawDiamond(int size) {
		//  *
		// * *
		//  *
		for (int i = 1; i <= size; i++) {
			for (int j = 1; j <= size - i + 1; j++) {
				System.out.print(" ");
			}
			for (int j = 1; j <= 2 * i - 1; j++) {
				if (j == 1 || j == 2 * i - 1) {
					System.out.print("*");
				} else {
					System.out.print(" ");
				}
			}
			System.out.println();
		}
	}

	// 倒三角
	public static void drawDiamond1(int size) {
		
		for (int i = size; i >= 1; i--) {
			for (int j = size - i; j >= 1; j--) {
				System.out.print(" ");
			}
			for (int j = 2 * i - 1; j >= 1; j--) {
				if (j == 1 || j == 2 * i - 1) {
					System.out.print("*");
				} else {
					System.out.print(" ");
				}
			}
			System.out.println();
		}
	}

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		// 打印实心
		Scanner in = new Scanner(System.in);
		System.out.println("因为菱形的特殊性质,所以请输入奇数:");
		int size = in.nextInt();// 菱形的高度
		drawDiamond(size / 2);
		// System.out.println("---------------------");
		drawDiamond1(size / 2 + 1);
	}

}

稍微缩短一点代码

public class L {
	public static void drawDiamond(int size) {
		// *
		// * *
		// *
		for (int i = 1; i <= size; i++) {
			for (int j = 1; j <= 2 * i + size - i; j++) {
				if (j == 1 + size - i + 1 || j == 2 * i + size - i) {
					System.out.print("*");
				} else {
					System.out.print(" ");
				}
			}
			System.out.println();
		}
	}

	// 倒三角
	public static void drawDiamond1(int size) {

		for (int i = size; i >= 1; i--) {
			for (int j = 1; j <= 2 * i - 1 + size - i; j++) {
				// 前 size - i个循环中,(j==1||j==2*i-1)不会被触发
				if (j == 1 + size - i || j == 2 * i - 1 + size - i)
					System.out.print("*");
				else
					System.out.print(" ");
			}
			System.out.println();
		}
	}

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		// 打印实心
		Scanner in = new Scanner(System.in);
		System.out.println("因为菱形的特殊性质,所以请输入奇数:");
		int size = in.nextInt();// 菱形的高度
		drawDiamond(size / 2);
//		System.out.println("---------------------");
		drawDiamond1(size / 2 + 1);
	}

}

其余的方法:

import java.util.Scanner;

public class L {
	//  *   i, size left = right = size / 2 + 1
	// * *  left-- right++ while i < size / 2 + 1
	//*   * i == size / 2 + 1 left++ right--
	// * *
	//  *
	//空心
	public static void drawdiamond(int size) {
		int left=size/2+1,right=size/2+1, dir = 1;
		for(int i=1;i<=size;i++){
			for(int j=1;j<=size;j++){
				if(j ==left || j == right){
					System.out.print("*");
				} else {
					System.out.print(" ");
				}	
			}
			System.out.println();
			if (i == size / 2 + 1)
				dir = -1;
			left = left - dir;
			right = right + dir;
		}
	}
	//实心
	public static void drawdiamond1(int size) {
		int left=size/2+1,right=size/2+1, dir = 1;
		for(int i=1;i<=size;i++){
			for(int j=1;j<=size;j++){
				if(j >=left && j <= right){
						System.out.print("*");
				} else {
					System.out.print(" ");
				}	
			}
			System.out.println();
			if (i == size / 2 + 1)
				dir = -1;
			left = left - dir;
			right = right + dir;
		}
	}
	

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		// 打印实心
		Scanner in = new Scanner(System.in);
		System.out.println("因为菱形的特殊性质,所以请输入奇数:");
		int size = in.nextInt();// 菱形的高度
		drawdiamond(size);
		drawdiamond1(size);
	}

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值