Java 实例 – 打印菱形
输出指定行数的菱形。
实例
public class Diamond {
    public static void main(String[] args) {
        print(8); // 输出 8 行的菱形
    }
 
    public static void print(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++) {
                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++) {
                System.out.print("*"); // 输出菱形下半部边缘
            }
            System.out.println(); // 换行
        }
    }
}
输出结果:
   *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *
			
						
			 Java 实例
 Java 实例 
       
头条号[IT荠荠菜]
qux***ong@qq.com
1、另一种实现思路:利用菱形的对称,编写代码,如下所示:
public class DiamondSymmetry { public static void main(String[] args) { print(8);// 输出 8 行的菱形 } public static void print(int size) { if (size % 2 == 0) { size++;// 计算菱形大小 } //第一个和第二个for 循环中的代码一样。 for (int i = 0; i < size / 2 + 1; i++) { for (int j = 0; j < (size / 2) - i; j++) { System.out.print(" ");// 输出左上角位置的空白 } for (int j = 0; j < 2 * i + 1; j++) { System.out.print("*");// 输出菱形上左半部边缘 } System.out.println(); } for (int i = size / 2 - 1; i >= 0; i--) { for (int j = 0; j < (size / 2) - i; j++) { System.out.print(" ");// 输出菱形左下角空白 } for (int j = 0; j < 2 * i + 1; j++) { System.out.print("*");// 输出菱形下半部边缘 } System.out.println(); } } }2、代码抽取:抽取重复的代码片段到方法 printLint(...) 中,如下所示:
public class DiamondSymmetry2 { public static void main(String[] args) { print(8);// 输出 8 行的菱形 } public static void print(int size) { if (size % 2 == 0) { size++;// 计算菱形大小 } //第一个和第二个for 循环中的代码一样。 for (int i = 0; i < size / 2 + 1; i++) { printLine(size, i); } for (int i = size / 2 - 1; i >= 0; i--) { printLine(size, i); } } public static void printLine(int size, int i) { for (int j = 0; j < (size / 2) - i; j++) { System.out.print(" ");// 输出菱形左下角空白 } for (int j = 0; j < 2 * i + 1; j++) { System.out.print("*");// 输出菱形下半部边缘 } System.out.println(); } }头条号[IT荠荠菜]
qux***ong@qq.com