用java打印等腰三角形2

本文介绍了一个简单的Java程序,用于打印等腰三角形。该程序通过双重循环实现,第一部分逐步增加星号(*)的数量形成上半部分,第二部分逐步减少星号数量形成下半部分。

package XunHuangLianXi;

public class Demo04 {
    public static void main(String[] args) {
        /**
         * 打印等腰三角形
         * 
         * 第一行的8个先输出最后一个是*
         * 然后循环每一行加一个*
         */
    
        for(int i = 1;i<=8;i++) {
        
            for(int j = 8-i; j>0;j--) {
                
                System.out.print(" ");
                
            }
            for(int j = 1;j<=i;j++) {
                //空格间隔距离
                System.out.print("* ");
                
            }
            //不换行
            System.out.println();
        }
        for (int i = 1; i <=7; i++) {
            for (int j = 1; j <=i; j++) {
                
                System.out.print(" ");
                
            }
            
            for (int j = 7; j >=i ; j--) {
                System.out.print("* ");
            }
            System.out.println();
        }
        
    }

}
d打印结果是

       * 
      * * 
     * * * 
    * * * * 
   * * * * * 
  * * * * * * 
 * * * * * * * 
* * * * * * * * 
 * * * * * * * 
  * * * * * * 
   * * * * * 
    * * * * 
     * * * 
      * * 
       * 
 

<think> 我们参考了多个引用,其中引用[1]、[2]、[4]、[5]提供了实心等腰三角形打印代码,引用[3]则提供了空心等腰三角形的代码。根据用户需求,我们主要关注实心等腰三角形的代码实现。 从引用中可以看出,打印等腰三角形的核心思路是使用两层循环: 1. 外层循环控制行数(即三角形的高度) 2. 内层循环分为两个部分: a. 打印空格:每行的空格数量为总高度减去当前行数(或者类似的计算,目的是让星号居中) b. 打印星号:每行的星号数量为2*当前行数-1(因为第1行1个,第2行3个,第3行5个,呈奇数递增) 我们注意到引用[1]、[2]、[5]的代码结构非常相似,而引用[4]的代码稍有不同(它使用了两个变量height和width,但实际上width没有使用,而且空格计算方式也类似)。 下面我们给出一个标准的实心等腰三角形打印代码(综合了引用[1]、[2]、[5]的写法): </think> 以下是使用Java语言打印等腰三角形的代码示例及相关解析: ### 实心等腰三角形实现 ```java public class IsoscelesTriangle { public static void main(String[] args) { int height = 5; // 三角形高度 for (int i = 1; i <= height; i++) { // 打印空格(控制左侧空白) for (int j = 1; j <= height - i; j++) { System.out.print(" "); } // 打印星号(奇数递增) for (int k = 1; k <= 2 * i - 1; k++) { System.out.print("*"); } System.out.println(); // 换行 } } } ``` #### 输出效果(当height=5时): ``` * *** ***** ******* ********* ``` ### 代码解析 1. **行数控制** 外层循环 `for (int i = 1; i <= height; i++)` 控制总行数,$i$ 表示当前行号 2. **空格规律** 内层循环 `for (int j = 1; j <= height - i; j++)` 每行空格数 = 总高度 - 当前行号 即:$N_{space} = h - i$ (实现右侧对齐的三角形) 3. **星号规律** 内层循环 `for (int k = 1; k <= 2 * i - 1; k++)` 每行星号数 = $2i - 1$(奇数序列) 证明: - 第1行:$2×1-1=1$ - 第2行:$2×2-1=3$ - 第n行:$2n-1$ ### 空心等腰三角形实现(进阶) ```java public class HollowTriangle { public static void main(String[] args) { int height = 5; for (int i = 1; i <= height; i++) { for (int j = 1; j <= height - i; j++) { System.out.print(" "); } for (int k = 1; k <= 2 * i - 1; k++) { // 判断边界位置输出星号 if (i == height || k == 1 || k == 2*i-1) { System.out.print("*"); } else { System.out.print(" "); } } System.out.println(); } } } ``` #### 输出效果: ``` * * * * * * * ********* ``` ### 关键算法特点 1. **时间复杂度**:$O(n^2)$(双重循环) 2. **空间复杂度**:$O(1)$(无额外存储) 3. **数学关系**:每行星号数构成首项为1、公差为2的等差数列,满足: $a_n = 2n-1$ 总星号数 = $n^2$($n$为行数)[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值