图样示例:
*****
***
*
***
*****
打印“沙漏”就类似打印一个上下金字塔一样,从见到示例图样我们就应该有了一个思路:就是先打印出等腰三角形
打印倒三角
//打印倒三角
class test{
public static void test() {
Scanner input = new Scanner(System.in);
int num = input.nextInt(); //输入要打印三角形的行数
//打印倒三角
for(int i=0;i<num;i++) { //外层循环打印换行
//第一行需要打印的空格数为0,之后依次递增,因此需要定义一个动态的变量j
for(int j=i;j>0;j--) {
System.out.print(" "); //打印空格
}
//每行打印的*以此递减,每次递减的数量为2*(num-i)-1
for(int j=1;j<=2*(num-i)-1;j++) {
System.out.print("*"); //打印"*"
}
System.out.println();
}
}
}
3
*****
***
*
打印正三角
//打印正三角
class test{
public static void test() {
Scanner input = new Scanner(System.in);
int num = input.nextInt();
for(int i =0;i<num;i++) {
for(int j=num-i-1;j>0;j--) {
System.out.print(" ");
}
for(int j=1;j<=2*i+1;j++) {
System.out.print("*");
}
System.out.println();
}
}
}
3
*
***
*****
二者结合之后就打印出了沙漏的大致形状了,然而正三角的第一行“塔尖”还没有处理
3 ***** *** * * *** *****
我们只需要让正三角的第一行不要输出就可以了,因此只需要加一句选择语句即可解决,完整代码如下:
class test{ public static void shaLou() { Scanner input = new Scanner(System.in); int num = input.nextInt(); for(int i=0;i<num;i++) { for(int j=i;j>0;j--) { System.out.print(" "); } for(int j=1;j<=2*(num-i)-1;j++) { System.out.print("*"); } System.out.println(); } for(int i =0;i<num;i++) { if(i==0) //当i=0时不输出正三角的第一行 continue; for(int j=num-i-1;j>0;j--) { System.out.print(" "); } for(int j=1;j<=2*i+1;j++) { System.out.print("*"); } System.out.println(); } } }
3 ***** *** * *** *****