牛客網每日一題:列印菱形
阿新 • • 發佈:2020-12-17
題目描述:
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);
}
}
}
結果