Q1:输入阶数,打印实心菱形。如下:
A1:
/**
* rowNum = 4
* *
* ***
* *****
* *******
* *****
* ***
* *
* 解题思路:
* 1、分为上下两个部分打印,上面打印rowNum行,下面打印(rowNum-1)行。打印一行后,换行处理。
* *
* ***
* *****
* *******
* 2、先来看上面的部分,空格数j与行数i (begin 0)和阶数rowNum对应的关系为每往下多一行,空格就会少一个,由于首行个数为(rowNum-1)
* 故 j=rowNum-1-i ; *的个数k是随着行数增加逐渐加2的,所以会有一个(i+1)*2,又由于每行个数为奇数,所以 k = (i+1)*2-1。
* 3、再看看下面的倒三角,空格数j随着行数i是逐渐减1的,第一行为1个空格,所以j=i+1 ; *的个数k是随着行数增加逐渐减2的,由于
* 其第一行的*个数为 (rowNum-1)*2-1,也是下面三角形中行数最大的一行,以该行为起始值,每行递减两个。所以是有一个k>2i。
* *****
* ***
* *
*
*
*
* @param args
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
int rowNum = scanner.nextInt(); // 输入阶数
for (int i = 0; i< rowNum;i++){
for (int j=0;j<rowNum-1-i;j++){
System.out.print(" ");
}
for (int k=0;k<(i+1)*2-1;k++){
System.out.print("*");
}
System.out.println();
}
for (int i=0;i<rowNum-1; i++){
for (int j=0;j<i+1;j++){
System.out.print(" ");
}
for (int k=(rowNum-1)*2-1;k>2*i;k--){
System.out.print("*");
}
System.out.println();
}
}
}