麻烦的方法,看其他人的代码通过横纵坐标的操作来输出,很可以,哈哈,比我的简便多了啊!!!
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case int a = in.nextInt(); if (a % 2 == 0) { // 偶数 // 双层位置 int changeSize = a / 2; for (int i = 0; i < a; i++) { if (i < changeSize) { // 上半部分 // 左边空格 for (int j = i; j > 0; j--) { System.out.print(" "); } System.out.print("*"); for (int k = i + 1; k < changeSize; k++) { System.out.print(" "); } System.out.println("*"); } else { // 下半部分 // 3 4 5 i // 3 2 1 a - i // 0 1 2 i - changesize for (int j = a - i; j > 1; j--) { System.out.print(" "); } System.out.print("*"); for (int k = i - changeSize; k > 0; k--) { System.out.print(" "); } System.out.println("*"); } } } else { // 单数 int centerSize = a / 2 + 1; for (int i = 1; i <= a; i++) { if (i < centerSize) { // 上半部分 // 左边空格 for (int j = 1; j < i; j++) { System.out.print(" "); } System.out.print("*"); // 中间空格 for (int k = (centerSize - i) * 2 - 1; k > 0; k--) { System.out.print(" "); } System.out.println("*"); } else if (i == centerSize) { // 中间部分 for (int j = 1; j < centerSize; j++) { System.out.print(" "); } System.out.println("*"); } else { // 下半部分 // 4 5 i // 1 3 (i - centerSize) * 2 - 1 for (int j = i; j < a; j++) { System.out.print(" "); } System.out.print("*"); for (int k = (i - centerSize) * 2 - 1; k > 0; k--) { System.out.print(" "); } System.out.println("*"); } } } } } }