一. 题目描述:
输入一个数字,打印出与数字等高的空心菱形。
如:输入9,会打印出如下图的空心菱形。
二. 代码实现:
// 空心菱形 public static void draw01(int size) { if (size % 2 == 0) { size++; } for (int i = 0; i < size / 2 + 1; i++) { for (int j = size / 2 + 1; j > i + 1; j--) {// 打印菱形空上角位置的空白 System.out.print(" "); } for (int j = 0; j < 2 * i + 1; j++){ // 打印菱形的上半部分 if (j == 0 || j == 2 * i) { System.out.print("*"); } else { System.out.print(" "); } } System.out.println(); } for (int i = size / 2 + 1; i < size; i++) { // 打印菱形的下半部分 for (int j = 0; j < i - size / 2; j++) { // 打印左下角的空白 System.out.print(" "); } for (int j = 0; j < 2 * size - 1 - 2 * i; j++) { if (j == 0 || j == 2 * (size - i - 1)) { System.out.print("*"); } else { System.out.print(" "); } } System.out.println(); } }
三. 顺带把实心菱形也搞出来吧:
// 实心菱形 private static void draw02() { int size = 5; for (int i = 1; i <= size; i++) { for (int j = 1; j <= size - i; j++) { System.out.print(" "); } for (int k = 1; k <= 2 * i - 1; k++) { System.out.print('*'); } System.out.println(); } for (int i = 1; i <= size - 1; i++) { for (int j = 1; j <= i; j++) { System.out.print(" "); } for (int k = 2 * size - 3; k >= 2 * i - 1; k--) { System.out.print('*'); } System.out.println(); } }
五. 验证:
// 测试 public static void main(String[] args) { // 空心菱形 draw01(9); System.out.println("=============华丽的分割线==================="); // 实心菱形 draw02(); }
六. 运行效果:
总结:碰上这种简单的面试题,可以偷着笑了。