菱形图案,金字塔,倒金字塔
import java.util.Scanner;
public class Ex07diamond {
/*
* 打印菱形图案,要求图案行数为n,从控制台输入,n为奇数
*
* 例如行数为7的菱形图案:
* * &
* *** &&&
* ***** &&&&&
* ******* &&&&&&&
* ***** @@@@@
* *** @@@
* * @
*
* 思路:将菱形图案分为金字塔和倒金字塔两个部分,分析金字塔和倒金字塔的图案规律;
* 按照规律打印图案的空格和*。
*
* 金字塔:
* 行数rowNum=(n+1)/2
* 第i行:空格数space=rowNum-i
* 星星*数star=2*rowNum-1
*
* 倒金字塔:
* 行数rowNum=(n-1)/2
* 第i行:空格数space=rowNum
* 星星*数star=2*(rowNum-i)+1
*
*/
public void outputFront(int n){
/*
* 打印出菱形上半部分的金字塔图案
*
*/
int rowNum = (n+1)/2;
for(int i=1;i<=rowNum;i++){
for(int j=1;j<=rowNum-i;j++){
//打印图案每行的空格
System.out.print(" ");
}
for(int j=1;j<=2*i-1;j++){
//打印图案每行的*
System.out.print("*");
}
System.out.println();
}
}
public void outputLast(int n){
/*
* 打印出菱形剩余部分的倒金字塔图案
*
*/
int rowNum = (n-1)/2;
for(int i=1;i<=rowNum;i++){
for(int j=1;j<=i;j++){
//打印图案每行的空格
System.out.print(" ");
}
for(int j=1;j<=2*(rowNum-i)+1;j++){
//打印图案每行的*
System.out.print("*");
}
System.out.println();
}
}
public void outputDiamond(int n){
this.outputFront(n);
this.outputLast(n);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入一个奇数:");
Scanner s = new Scanner(System.in);
int n = s.nextInt();
Ex07diamond ex07 = new Ex07diamond();
//ex07.outputFront(7);
//ex07.outputLast(7);
System.out.println("菱形图案为:");
ex07.outputDiamond(n);
s.close();
}
}
【输出结果】
请输入一个奇数:
15
菱形图案为: