import java.util.Scanner;
public class DiagonalTriangle {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// System.out.print("请输入斜三角的边长:");
// int n = scanner.nextInt(); // 输入边长
int n=20;
for (int i = 1; i <= n; i++) { // 遍历每一行
for (int j = 1; j <= i; j++) { // 遍历当前行的每一个数
if (j == i) { // 如果是当前行的最后一个数
System.out.print(j); // 直接输出该数
} else { // 否则输出该数和空格
System.out.print(j + " ");
}
}
for (int j = i - 1; j >= 1; j--) { // 遍历当前行的倒数第二个数到第一个数
System.out.print(j + " "); // 输出该数和空格
}
System.out.println(); // 换行
}
}
}
在上面的代码中,我们定义了一个名为DiagonalTriangle的类,其中包含一个main方法,用于打印斜三角。我们首先创建了一个Scanner对象,用于从控制台读取用户输入的边长。然后,我们使用两个for循环,遍历每一行和当前行的每一个数。具体地,我们先输出当前行的前半部分,即第一个数到倒数第二个数,如果是最后一个数就直接输出,否则输出该数和一个空格。然后,我们再输出当前行的后半部分,即倒数第二个数到第一个数,每个数后面加一个空格。最后,我们换行输出下一行。
需要注意的是,该算法的时间复杂度为O(n^2),实际应用中可能会有优化空间。同时,该算法打印的斜三角是左下方向的,如果需要打印右下方向的斜三角,可以将第一个for循环中的i改为从n到1的倒序遍历即可。