1. 程式人生 > >java輸入菱形邊長,輸出菱形

java輸入菱形邊長,輸出菱形

問題描述:

有一個類Rhombus.java,可以通過main函式顯示菱形圖案。

    1.通過 Scanner 類來獲取使用者的輸入。

    2.需要使用巢狀的For語句,並使用System.out。print()來列印字元。

    3.菱形圖案的邊長由Scanner獲取的邊長來指定。

例如:獲取number=4得到如下圖形

                           *

                         * * *

                       * * * * *

                     * * * * * * *

                       * * * * *

                         * * *

                           *

問題分析

由於for迴圈巢狀只能增或者減。不能增後減、減後增。因此整個菱形問題可以先分為兩部分:上部分和下部分。

觀察菱形發現輸出菱形,是由空格和“*”組成,且成遞增(遞減)因此又可分為空格部分和“*”部分。按照此思路問題得以解決。

import java.util.Scanner;

public class Rhombus {
public static void main(String[] args) {
	Scanner sc=new Scanner(System.in);
	System.out.println("請輸入菱形的邊長");
	int number=sc.nextInt();
	//主要分為上下部分;
	//每個部分又分為空格部分和*部分
	for(int i =1;i<=number;i++)
	{
		for(int j=1;j<=number-i;j++)
			 //先列印空格後列印*
			//空格個數為number-i
		{
			System.out.print(" ");
		}
		for(int k=number-i+1;k<=number+i-1;k++)
			//*個數為number+i-1-(number-i+1)個
			//number-i+1為*起始位置,number+i-1為結束位置(位置相同則為一個)
		{
			System.out.print("*");
		}
		System.out.println();
	}
	for(int i =number+1;i<2*number;i++)
	{
		for(int j=1;j<=(i-number);j++)
		{
			System.out.print(" ");
			//空格結束位置後一位就是*起始位置
		}
		for(int k=(i-number+1);k<3*number-i;k++)
			//*位置起始為(i-number+1)截止位置為 3*number-i;
                       //*數為4*number-2*i+1
			//除去中心線外每邊的*個數為2*number-i,
                       //所以截止位置就應該是中心線加上一邊*的個數
		{
			System.out.print("*");
		}
		System.out.println();
	}