不用if的来了~~不用if反而感觉思路更清晰了。。。
- public class PrintStairs {
- public static final int NSTAIRS = 3; // 楼梯数
- public static final int STAIR_WIDTH = 6; // 楼梯宽度
- public static final int STAIR_HEIGHT = 3; // 楼梯所占行数
- public static void main(String[] args) {
- int wall = (NSTAIRS + 1) * (STAIR_WIDTH - 1) + 2; // 墙,即最右一列的位置
- // 打印楼梯部分,每次循环打印一个楼梯
- for (int stair = 0; stair < NSTAIRS; stair++) {
- // 每个楼梯分3行打印,每行前的缩进数
- int indents = (STAIR_WIDTH - 1) * (NSTAIRS - stair);
- // 楼梯和墙之间的空格
- int toWall = (STAIR_WIDTH - 1) * stair;
- // 打印第一行
- for (int i = 0; i < indents; i++)
- System.out.print(" ");
- for (int i = 0; i < STAIR_WIDTH; i++)
- System.out.print("*");
- for (int i = 0; i < toWall; i++)
- System.out.print(" ");
- System.out.println("*");
- // 打印第2、3行
- for (int i = 0; i < 2; i++) {
- for (int j = 0; j < indents; j++)
- System.out.print(" ");
- System.out.print("*");
- // 楼梯本身的空格和楼梯与墙之间的空格合并打印
- for (int j = 0; j < STAIR_WIDTH - 1 + toWall; j++)
- System.out.print(" ");
- System.out.println("*");
- }
- }
- // 打印地板
- for (int i = 0; i < wall; i++)
- System.out.print("*");
- }
- }
复制代码 |