1. 程式人生 > 其它 >牛客網每日一題:列印菱形

牛客網每日一題:列印菱形

題目描述:

java KiKi學習了迴圈,BoBo老師給他出了一系列列印圖案的練習,該任務是列印用“*”組成的菱形圖案。

輸入描述:

java 多組輸入,一個整數(2~20)。

輸出描述:

java 針對每行輸入,輸出用“”組成的菱形,每個“”後面有一個空格。

示例1

輸入
2 
輸出 
  * 
 * * 
* * * 
 * * 
  *

示例2

輸入
3
輸出
   * 
  * * 
 * * * 
* * * * 
 * * * 
  * * 
   * 

連結
https://www.nowcoder.com/practice/8b935f8ffe99445dbd42494febd13e45?tpId=107&&tqId=33344&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

分析

觀察示例1可將菱形看成三部分列印
上半部分
中間
下半部分

上部分一共列印n行(當n=2)
空格  字元
2     1    i=0
1     2    i=1
n-1   i+1

中間列印n+1個字元

下部分一共列印n行
空格  字元
1     2     i=0
2     1     i=1
i+1   n-1

程式碼思路

//列印上部分
for(){
  列印空格n-1
  列印字元i+1
  列印回車
}
//列印中間部分
for(){
  列印字元n+1
}
//列印下半部分
for(){
  列印空格i+1
  列印字元n-1
  列印回車
}

程式碼

import java.
lang.*; import java.io.*; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = null; StringBuilder sr = new StringBuilder(); while((s = br.readLine
())!=null){ int n = Integer.parseInt(s); //列印上半部分 for(int i = 0;i<n ;i++){ for(int j = 0;j<n-i;j++){//列印空格 sr.append(" "); } for(int j = 0;j<i+1 ;j++){//列印圖案 sr.append("* "); } sr.append("\n");//回車 } //列印中間 for(int j = 0;j<n+1 ;j++){ sr.append("* "); } sr.append("\n");//回車 //列印下半部分 for(int i = 0;i<n ;i++){ for(int j = 0;j<i+1;j++){//列印空格 sr.append(" "); } for(int j = 0;j<n-i;j++){//列印圖案 sr.append("* "); } sr.append("\n");//回車 } System.out.print(sr); sr.setLength(0); } } }

結果
在這裡插入圖片描述