自己写的:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String[] str = bf.readLine().split(" ");
int a = Integer.parseInt(str[0]);
char sign = str[1].charAt(0);
int cnt1 = 0, cnt2 = 0, split = 0;
if (a == 0) {//首先考虑特殊情况
System.out.println("0");
} else {
for (int i = 1; ; i++) {
if (a >= 2 * i * i - 1 && a < 2 * (i + 1) * (i + 1) - 1) {
cnt1 = i;
cnt2 = 2 * i * i - 1;
break;
}
}
//打印图形:倒三角
for (int i =0 ; i <2 * cnt1 - 1; i+=2) {
split++;
for (int j = 1; j < split; j++) {
System.out.print(" ");
}
for (int k = 0; k < 2 * cnt1 - 1 - i; k++) {
System.out.print(sign);
}
System.out.println();
}
//打印图形:正梯形
for(int i =2 * cnt1 - 3 ; i >=0; i-=2){
for(int j=split-2;j>0;j--){
System.out.print(" ");
}
split--;
for (int k = 0; k < 2 * cnt1 - i; k++) {
System.out.print(sign);
}
System.out.println();
}
System.out.println(a - cnt2);
}
}
}
大佬的:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
char c = in.next().charAt(0);
in.close();
int w = (int) Math.sqrt((n + 1) / 2);
for (int i = 0; i < 2 * w - 1; i++) {
for (int j = 0; j < 2 * w - 1; j++) {
if ((i > j && i + j < 2 * w - 2) || (i < j && i + j > 2 * w - 2)) {
if (i > j && i + j < 2 * w - 2)
System.out.print(" ");
} else {
System.out.print(c);
}
}
System.out.println();
}
System.out.println(n - 2 * w * w + 1);
}
}