代码:
package dome1;
import java.util.Scanner;
/**
* @author M.Wang
* 打印一个空心的菱形
* *
* * *
* * *
* * *
* * *
* * *
* *
*/
public class TuXing5 {
@SuppressWarnings("resource")
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入您需要绘制的图形行数:");
int sum = input.nextInt();
// 打印空心菱形分两部分打印,先打印菱形的上半部分,在打印下半部分
/*上半部分空心等腰三角形规律分析:
先分析等腰三角形右边的空格规律:以上边菱形为例,上半部分有4行,空格规律为4-当前第几行
再分析星号:为实心等腰三角形为分析基本,第一行一个星号,,其他行数皆为两个星号,这两个星号的位置都在等腰三角形行的首尾位置
中间都是空格,分析星号的位置规律(这边分析的位置为等腰三角形,包括中间空格,不包括右边空格):
行数 星号位置 星号位置
第一行 第一个
第二行 第一个 第三个
第三行 第一个 第五个
第四行 第一个 第七个
以此推出,星号的位置与行数的关系:1或(2*行数-1),中间的输出空格
*/
for(int i = 1;i <= sum;i++) {
for(int j = 1;j <= sum-i;j++) {
System.out.print(" ");
}
for(int j = 1;j <= 2*i-1;j++) {
if(j == 1 || j == 2*i-1) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.println();
}
// 分析下半部分图形输出
/*下半部分为倒立的空心等腰三角形
下半部分等腰三角形总行数=输入行数-1行,
还是先分析右边的空格三角形:
行 个数
1 1
2 2
3 3
推出:右边空格三角形规律为:第几行就有几个空格
分析空心倒立三角形,还是以实心倒立三角形为基本分析:最后一行一个星号,
其他行数皆为两个星号,这两个星号的位置都在等腰三角形行的首尾位置,中间都是空格,
分析星号的位置规律(这边分析的位置为等腰三角形,包括中间空格,不包括右边空格):
行 位置 位置 输入行数
1 第1个 第5个 4
2 第1个 第3个 4
3 第1个 4
推出:星号的位置与输入行数与当前行数的关系:1或(输入行数-当前行数)*2-1,中间的输出空格
*/
for(int i = 1;i <= sum-1;i++) {
for(int j = 1;j <= i;j++) {
System.out.print(" ");
}
for(int j = 1;j <= 2*(sum-i)-1;j++) {
if(j == 1 || j == 2*(sum-i)-1) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
运行结果: