java輸入菱形邊長,輸出菱形
阿新 • • 發佈:2018-11-15
問題描述:
有一個類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();
}