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();
		}
	}
}
 
給予借鑑和思考,方法有很多,不單隻有這種,也許你的改進之後會更好。

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章