用Java语言输出空心三角形

用Java语言输出空心三角形

目标:

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

思路分析

       化繁为简
    1. 先打印出一个矩形
    
       * * * * *
       * * * * *
       * * * * * 
       * * * * *
       * * * * *
    
    2. 打印半个金字塔
    
       *                第一层有一个*
       * *              第二层有两个*
       * * *            第三层有三个*
       * * * *          第四层有四个*
       * * * * *        第五层有五个*
    
    3. 打印整个金字塔
    
            *           第一层有一个*        2 乘以 层数 -1        有4=(总层数-1)个 空格
           ***          第二层有三个*        2 乘以 层数 -1        有3=(总层数-2)个 空格
          *****         第三层有五个*        2 乘以 层数 -1        有2=(总层数-3)个 空格
         *******        第四层有七个*        2 乘以 层数 -1        有1=(总层数-4)个 空格
        *********       第五层有九个*        2 乘以 层数 -1        有0=(总层数-5)个 空格
    
    4. 打印空心金字塔[最难想到的]
    
            *           第一层有一个*        当前行的位置是*,最后一个也是*        有4=(总层数-1)个 空格
           * *          第二层有二个*        当前行的位置是*,最后一个也是*        有3=(总层数-2)个 空格
          *   *         第三层有二个*        当前行的位置是*,最后一个也是*        有2=(总层数-3)个 空格
         *     *        第四层有二个*        当前行的位置是*,最后一个也是*        有1=(总层数-4)个 空格
        *********       第五层有九个*        2 乘以 层数 -1  全部输出*           有0=(总层数-5)个 空格
    
        先死后活
        5 层数 int totallevel = 5;
    
        缺点:
    5. 未能实现存在偶数行的输出

代码实现

public class stars 
{
   
    public static void main(String[] args) 
    {
           
        byte totallevel = 10;  // 层数  先死后活   可以使用键盘输入层数
        for (byte i = 1; i <= totallevel; i++)   // i表示层数
        {
   

            // 在输出*之前,还要输出 对应空格=总层数-当前层
            for (byte k = 1; k <= totallevel - i; k++)
            {
   
                System.out.print(" ");
            }

            // 控制每层 * 的个数
            for (byte j = 1; j <= 2 * i - 1; j++)  // 重点
            {
   

                // 当前行的位置是*,最后一个也是*,最后一层全部输出*
                if (j == 1 || j == 2 * i - 1 || i == totallevel)
                {
   
                    System.out.print("*");
                }
                else
                {
   

                    // 其他情况输出 空格
                    System.out.print(" ");
                }
            }

            // 每打印完一层后,就换行  println 换行
            System.out.println("");
        }
    }
}

拓展

用Java输出空心菱形

方法1(左右部分)

目标

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

思路分析:

化繁为简:
1. 先打印出一个矩形
2.打印半个菱形(左右部分)
3. 打印整个棱形

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

*********
 *******
  *****
   ***
    *
4. 打印空心棱形[重点:最难想到的]
		    *
           * *
          *   *
         *     *
        *       *
       *         *
      *           *  
       *         *
        *       *
         *     *
          *   *
           * *
            * 

先死后活

13 层数 int totallevel = 13;

优化:

1. 分类讨论奇数,偶数情况
2. 分类讨论输入方法,输入数据的准确型等

缺点:

  1. 未能实现对存在偶数行的标准输出
  2. 未能对奇数行和偶数行做出明确的显示方式
  3. 为能使用其他情况排除可能,比如:输入的数字并非整数,而是小数、字符串等
  4. 可用字符表示整数(字符的本质是整数)
  5. 目前只能在特定的的奇数且为整数(字符也可以)的条件下漂漂亮亮的输出棱形

代码实现


public class diamondone 
{
   
    public static void main(String[] args) 
    {
   

        byte totallevel = 11; // 层数 先死后活 可以使用键盘输入层数
        if (totallevel ></
  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值