java打印等腰三形
时间: 2025-06-04 22:13:33 浏览: 17
以下是使用 Java 编写的一个完整的程序,用于打印等腰三角形:
### 等腰三角形打印代码示例
```java
public class IsoscelesTriangle {
public static void main(String[] args) {
int n = 5; // 设置三角形的高度
for (int i = 1; i <= n; i++) {
// 打印每一行前面的空格部分
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
// 打印每一行中间的星号(*)部分
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print("*");
}
// 换到下一行
System.out.println();
}
}
}
```
此代码通过嵌套 `for` 循环实现了等腰三角形的打印功能。外层循环控制每行的数量,内层两个循环分别负责打印空格和星号[^1]。
运行该代码后,输出如下所示:
```
*
***
*****
*******
*********
```
如果需要调整三角形的高度,可以修改变量 `n` 的值。例如设置 `n = 7` 将会生成高度为 7 行的等腰三角形[^1]。
---
#### 关于其他类型的三角形打印
除了等腰三角形之外,还可以扩展代码逻辑来支持更多形状的三角形,比如倒三角形或直角三角形。以下是一个简单的倒三角形打印示例:
```java
public class InvertedIsoscelesTriangle {
public static void main(String[] args) {
int n = 5; // 倒三角形的最大宽度对应的高度
for (int i = 1; i <= n; i++) {
// 打印每一行前面的空格部分
for (int j = 1; j <= i - 1; j++) {
System.out.print(" ");
}
// 打印每一行中间的星号(*)部分
for (int k = 1; k <= 2 * (n - i) + 1; k++) {
System.out.print("*");
}
// 换到下一行
System.out.println();
}
}
}
```
执行以上代码的结果将是:
```
*********
*******
*****
***
*
```
这段代码同样利用了嵌套循环结构,不过它改变了星号数量随行数减少的趋势[^2]。
---
#### 更复杂的图形——杨辉三角形
对于更高级的应用场景,也可以尝试绘制像杨辉三角这样的复杂图案。下面是一段基于组合数学原理构建杨辉三角并居中显示的代码片段:
```java
import java.util.Scanner;
public class YangHuiTriangle {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入要输出的杨辉三角行数:");
int rows = input.nextInt();
int[][] triangle = new int[rows][];
for (int i = 0; i < rows; i++) {
triangle[i] = new int[i + 1]; // 初始化当前行为 i+1 列
triangle[i][0] = 1;
triangle[i][i] = 1;
for (int j = 1; j < i; j++) {
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
}
// 居中打印杨辉三角
int maxNumberWidth = String.valueOf(triangle[rows - 1][rows / 2]).length();
StringBuilder formatBuilder = new StringBuilder("%" + maxNumberWidth + "d");
for (int i = 0; i < rows; i++) {
StringBuilder line = new StringBuilder();
for (int num : triangle[i]) {
line.append(formatBuilder.toString()).append(num).append(" ");
}
System.out.printf("%" + ((maxNumberWidth + 1) * rows - line.length()) / 2 + "s", "");
System.out.println(line.toString().trim());
}
}
}
```
这个版本不仅计算出了数值型的数据表还考虑到了美观度进行了适当缩进处理[^3]。
---
阅读全文
相关推荐

















