题目描述:
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);
}
}
}
结果