用For循環創建菱形到空心菱形

      我發現在創建圖形的時候有一個技巧,可以很快的用原來的方法找到空心菱形的方法。下面我給大家介紹一下:

       1.首先是創建菱形,我覺得很有趣,之前我有一個用二維數組創建空心菱形的文章,但是那篇文章的方法有侷限,這篇文章的方法沒有侷限,任意的總行數都可以。

      

import java.util.Scanner;

public class TestR {

	public static void main(String[] args) {
		System.out.println("請輸入菱形的大小");
		Scanner sc=new Scanner(System.in);
		int row=sc.nextInt();
		if (row>0) {
			for (int i = 0; i < row; i++) {
				for (int j = 0; j < row-i; j++) {
					System.out.print(" ");
				}for (int j = 0; j < 2*i-1; j++) {
						System.out.print("*");	
				}
				System.out.println();
			}
			for (int i = 0; i < row; i++) {
				for (int j = 0; j < i; j++) {
					System.out.print(" ");
				}for (int j = 0; j < 2*(row-i)-1; j++) {
						System.out.print("*");
				}
		
				System.out.println();
			}
	
		}
	

	}

}
效果圖 見圖1

 圖1


2.思考。我要怎麼樣才能得到空心的菱形呢?首先空心的菱形只有邊上有*,其他都是空格;

   那麼技巧來了,(對於我來說就是獨創絕技,哈哈笑場)。 我修改一下源代碼如下:

不輸出*號了,輸出相對應的數字:

import java.util.Scanner;

public class TestR {

	public static void main(String[] args) {
		System.out.println("請輸入菱形的大小");
		Scanner sc=new Scanner(System.in);
		int row=sc.nextInt();
		if (row>0) {
			for (int i = 0; i < row; i++) {
				for (int j = 0; j < row-i; j++) {
					System.out.print(" ");
				}for (int j = 0; j < 2*i-1; j++) {
						System.out.print(j);	
				}
				System.out.println();
			}
			for (int i = 0; i < row; i++) {
				for (int j = 0; j < i; j++) {
					System.out.print(" ");
				}for (int j = 0; j < 2*(row-i)-1; j++) {
						System.out.print(j);
				}
		
				System.out.println();
			}
	
		}
	

	}

}
效果圖見圖2
圖2
通過圖二,還不足以發現規律的話,在試一下。只輸出邊上的數字看看


所以,簡單的來了,我們直接把這個邊上的輸出的數字直接換成*號輸出不就可以了

其實道理很簡單,在輸出的時候直接if-else判斷一下,輸出兩邊的*號既可以。


import java.util.Scanner;

public class TestR {

	public static void main(String[] args) {
		System.out.println("請輸入菱形的大小");
		Scanner sc=new Scanner(System.in);
		int row=sc.nextInt();
		if (row>0) {
			for (int i = 0; i < row; i++) {
				for (int j = 0; j < row-i; j++) {
					System.out.print(" ");
				}for (int j = 0; j < 2*i-1; j++) {
					if (j==0||j==2*i-2) {
						System.out.print("*");
					}else{
						System.out.print(" ");
					}
						
				}
				System.out.println();
			}
			for (int i = 0; i < row; i++) {
				for (int j = 0; j < i; j++) {
					System.out.print(" ");
				}for (int j = 0; j < 2*(row-i)-1; j++) {
					if (j==0||j==2*(row-i)-2) {
						System.out.print("*");
					}else{
						System.out.print(" ");
					}
				
				
				}
		
				System.out.println();
			}
	
		}
	

	}

}

    寫在最後,常常我們發現規律的方法不一樣,但是最後都會看清這個周遭。

    事情常常事與願違的時候,想想背後發生的原因,也許並不怪你,或許還不到你發現自真正錯誤的時候,需要時間的考驗和非常多的失敗。程序員常開的玩笑是,我一天90%的時間都是Debug,真正寫好的代碼只要幾分鐘。

      作爲一般人,生活中總是90%的時間都在處理瑣事,真正學到的東西以及掌握的知識就是那幾分鐘,也許你要掌握一個知識點,需要看幾本書一樣,多維度的理解問題,才能真正學到這個東西。

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