老有人问这个初级的问题,做了这个支持任何底边和高度的打印程序。留作参考。
- class T {
- public static void main(String[] args) {
- printDengYao(20, 10);// 打印等腰三角形
- printDengBian(20);
- }
- public static void printDengBian(int width) {
- // 等边三角形,需要先计算
- printDengYao(width, (int) (Math.tan(60.0 / 180.0 * Math.PI) * width / 2));
- }
- /**
- * 等腰三角形。
- *
- * @param width
- * 底边宽度,最好是偶数。
- * @param height
- * 高度
- */
- public static void printDengYao(int width, int height) {
- // 中点位置,也是第一个点的位置
- int middle = (width + 1) / 2;
- // 开始打印的位置
- int start;
- // 终止打印的位置
- int end;
- // 角度
- double angle = 1.0 * middle / height;
- for (int k = 0; k <= height; k++) {
- start = (int) (middle - k * angle);
- end = (int) (middle + k * angle);
- for (int m = 0; m <= start; m++) {
- System.out.print(" ");
- }
- for (int m = start; m <= end; m++) {
- System.out.print("*");
- }
- System.out.println();
- }
- }
- }
运行效果
![](https://p-blog.csdn.net/images/p_blog_csdn_net/java2000_net/EntryImages/20081011/2008-10-11_065941.gif)