Java 用二维数组创建空心菱形

           提供一个我自己的实现方法,方法实现只是一个人的是靠方式,并不是代表实力,真正的实力用自己的这种思维解决别人亟待解决的问题,真才是目前我觉得的编程的意义。鸡汤喝了,精神病好了!来看看我的实例。

        题目:用“*”创建一个菱形空心

        为了能更好的找出横纵坐标的关系,我简单做了一个菱形图,


             图1.菱形

     从图中可以找出*点与坐标值的意义,所以此题是用二维坐标来做的;

     分两部分输出图像, 上半部分:从中间开花,给两边的值赋值为1,否则为0,最后给赋值为1的点输出*号;

     定义二维数组的位 int []a=new int [13][13];

     定义列方向上的两个点,p1,p2,即a[i][p1],a[i][p2];  

     所以由图2,可知   A ,B,C点可以知道p1=a.length/2-i(在编程过程中i是0,a.length/2是6也是一行中的中点),p2=a.length/2+i; B(i,p1),C(i,p2);


图2.菱形

     为什么分两部分,因为在a.lengh/2-i  ,在i等于7的时候得负了,所以并不能一直使用原来的p1,p2的值,需要重新找好横纵坐标的规律。

      下半部分:D的坐标是(i,i-a.length/2),即D(i,p3),E的坐标比较难找到关系,我也是想了很久,呵呵就是一直试,最后没办法试不出来,还是画图做分析才找到规律的,所以科学的方法是要用数学的思维,找横纵坐标点的位置关系;


图3 E点坐标分析


     具体实现代码:

package com.JavaBase;

public class lingxing {
	// 菱形

	public static void main(String[] args) {
		int n = 15;//n只能是奇数
		int[][] a = new int[n][n];
		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[i].length; j++) {
				a[i][j] = 0;
				int p1 = a.length / 2 - i;
				int p2 = a[i].length / 2 + i;//p1,p2的规律非常好找
				if (i <= a.length / 2) {//上半部分
					a[i][p1] = 1;
					a[i][p2] = 1;
					if (a[i][j] == 1) {
						System.out.print("*");
					} else {
						System.out.print(" ");
					}
				} else {//下半部分
					int p3 = i - a.length / 2;//与p1相反
					int p4 = a.length - (i - a.length / 2) - 1;//p4的规律比较难找到
					a[i][p3] = 1;
					a[i][p4] = 1;
					if (a[i][j] == 1) {
						System.out.print("*");
					} else {
						System.out.print(" ");
					}
				}
			}
			System.out.println();
		}
	}
}
 
给予借鉴和思考,方法有很多,不单只有这种,也许你的改进之后会更好。

      

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值