用Java代码完成菱形+数字的效果

之前写代码是直接看到题目就打开软件然后边想边写,但是这样很容易出现思维卡顿,所以这里编写的菱形+数字会采用先盘逻辑后盘代码的顺序。

最后实现的效果图:

 这个效果说难也不难,但说简单也不简单,最重要的是思维逻辑得跟上,下面来盘盘逻辑吧~~

逻辑步骤:

1、分区

        给图片分区,大概分为上部分(橙色)和下部分(蓝色),并且各自再分为左边的数字(绿色)右边的数字(粉色)

 2、代码分为两个部分进行编写,上部分和下部分,先编写上部分中的for循环实现一个三角形的形状。

        上部分需要考虑:行数、空格数、左边数字、右边数字

        空格数是跟行数有关的,行数不同空格数也不同

        左右边数字也跟行数有关,行数不同数字个数也不同

        但是数字和空格数之间没有关系

        所以:行数的for循环需要包裹空格数和左右边数字,左右边数字和空格数并列

3、上部分-找关系

        第二步已经知道了四者之间的关联后就可以找出几者的关系了。

        

         行数:从1开始到总行数5结束

       空格数

总行数:5第1行空格数4
第2行空格数3
第3行空格数2
第4行空格数1
第5行空格数0

                      找到规律:空格数 是从( 总行数- 行数)开始到 >0 结束

        左边数字:

                      能直观的看到左边数字都是从1开始,所以for开头数字就是1

第1行结束数字1
第2行结束数字2
第3行        结束数字3

                      找到规律: 从 1开始 到 <=行数 结束 (可以观看上面的图)

        右边数字:

                      能直观的看到第一行右边是没有数字的,从第二行开始才有 ,且结束数字都是1   

总行数:5第1行开始数字0
第2行开始数字1
第3行开始数字2
第4行开始数字3
第5行开始数字4

                        找到规律:右边数字从  (行数-1)开始到  >0 结束

4、编写上部分的代码 

//        todo 上半部分
//        TODO 行数
//        line 为用户输入的总行数 ,i 为行数,k控制空格,j用于控制左边数字,a控制右边数字
        for (int i = 1; i <= line; i++) {
            //        todo  空格
            for (int k = line - i; k > 0; k--) {
                System.out.print(" ");
            }

            // 左边数字
            for (int j = 1; j <= i; j++) {
                System.out.print(j);
            }
            // 右边数字
            for (int a = i - 1; a > 0; a--) {
                System.out.print(k);
            }
            System.out.println("");


        }

 5、下部分--找关系

       下部分跟上部分一致,同样分为 行数、空格、左边数字、右边数字

        

         行数:可以从图中看出行数是1-4,但是直接写4后会直接写死,我们需要找出总行数和行数的关系,这里是 从 1 开始到  <=(总行数-1)结束

        空格数:

总行数:5第1行空格数1
第2行空格数2
第3行空格数3
第4行空格数4

                                找到规律:空格数从 行数开始 到 >0 结束

         左边数字

                                通过观察能够看出左边数字都是从1开始的,接下来分析结束

总行数:5第1行结束数字4
第2行结束数字3
第3行结束数字2
第4行结束数字1

                                找到规律:左边数字 从 1开始到 <=(总行数-行数)结束

        右边数字:

                        通过观察可以看到右侧结束数字都是1

总行数:5第1行开始数字3
第2行开始数字2
第3行开始数字1
第4行开始数字0

                        找到规律:右侧数字从 (总行数-行数-1)开始 到  >=1 结束

6、编写下部分的代码

//        todo 下半部分
//        TODO 行数
        for (int i = 1; i < line ; i++) {
            //        todo  空格
            for (int k = i; k > 0; k--) {
                System.out.print(" ");
            }

            // 左边数字
            for (int j = 1; j <= line - i; j++) {
                System.out.print(j);
            }
            // 右边数字
            for (int a = line - i-1; a >= 1; a--) {
                System.out.print(a);
            }
            System.out.println("");


        }

7、全部代码

import java.util.Scanner;

public class test13 {

//    TODO 菱形+数字

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入行数");
        int line = scanner.nextInt();
//        todo 上半部分
//        TODO 行数
        for (int i = 1; i <= line; i++) {
            //        todo  空格
            for (int k = line - i; k > 0; k--) {
                System.out.print(" ");
            }

            // 左边数字
            for (int j = 1; j <= i; j++) {
                System.out.print(j);
            }
            // 右边数字
            for (int j = i - 1; j > 0; j--) {
                System.out.print(j);
            }
            System.out.println("");


        }


//        todo 下半部分
//        TODO 行数
        for (int i = 1; i < line ; i++) {
            //        todo  空格
            for (int k = i; k > 0; k--) {
                System.out.print(" ");
            }

            // 左边数字
            for (int j = 1; j <= line - i; j++) {
                System.out.print(j);
            }
            // 右边数字
            for (int j = line - i-1; j >= 1; j--) {
                System.out.print(j);
            }
            System.out.println("");


        }
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值