提供一個我自己的實現方法,方法實現只是一個人的是靠方式,並不是代表實力,真正的實力用自己的這種思維解決別人亟待解決的問題,真纔是目前我覺得的編程的意義。雞湯喝了,精神病好了!來看看我的實例。
題目:用“*”創建一個菱形空心
爲了能更好的找出橫縱座標的關係,我簡單做了一個菱形圖,
圖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(); } } }
給予借鑑和思考,方法有很多,不單隻有這種,也許你的改進之後會更好。