在控制台打印菱形是个很经典的题目,考察的是对嵌套循环的使用。

题目的要求是,打印出如下菱形:

思路分析:

因为代码都是自上而下,从左往右一步步运行的,所以想要打印出这样的图形需要先拆解它,分析它的构成,拆成不同的小部分来完成,也有助于理清思路,简化代码。

  1. 上半部分:等腰三角形

不难看出菱形是由一个正的等腰三角形和一个倒的等腰三角形拼接而成,并且倒着的等腰三角形比正着的少一层。如图所示:

先看上面的等腰三角形,由于代码都是一行行自上而下打印的,所以可以一行行分析。不难发现等腰三角形第1行有1个点,第2行有2个点,第3行有3个点,所以第一步可以先用循环将点打印出来,保证数目是对的,代码如下(这里我循环初始值为0,总共5层,第0层1个点,第1层2个点,以此类推):

        for(int i = 0; i < 5; i++) {//外层循环,表示层数for(int j = 0; j < i + 1; j++) { //内层循环,表示每层点的打印System.out.print("o ");}System.out.println(); //打完一层换一行}

打印结果如下:

第一步完成了,但是发现这是直角三角形,只有当左侧有了空格才可以成为等腰三角形。通过观察可以发现每一行的空格数是不一样的,空格自下而上是从0递增的,因此可以看出规律:第5层0个空格,第4层1个空格...第1层4个空格。因此我们在打印每一层的时候,可以先打印该层前面的空格数,再打印后面的点数:

        for(int i = 0; i < 5; i++) {//外层循环,表示层数for(int j = 4 - i; j > 0;  j--) {//内层循环,表示每层左侧空格情况System.out.print(" ");}for(int j = 0; j < i + 1; j++) {//内层循环,表示每层点的打印System.out.print("o ");}System.out.println();//一层结束换行}

运行结果如下:

2.下半部分:倒等腰三角形

通过上面的步骤,菱形的一半已经打印完毕了,剩下的一半是小一层的倒等腰三角形:

同理,通过找规律观察出层数和左侧空格数的关系,代码如下:

        for(int i = 0; i < 4; i++) {for(int j = 0; j < i + 1; j++) {System.out.print(" ");}for(int j = 4 - i; j > 0; j--) {System.out.print("o ");}System.out.println();}

打印出结果如下:

最后,将上下部分代码拼在一起就可以得到菱形了。

当然,我们可以通过将层数改成变量num,然后通过扫描器Scanner来输入想要的层数,让代码”活“起来。比如,我想要一个上半部分为10层的菱形,只需要在控制台输入10,即可得到这样一个大的菱形:

Java打印菱形的思路分析相关推荐

  1. java打印菱形图案_java打印出菱形图案实例详解

    第一步:首先对图像进行解析 想要打印该图形必须要进行多层循环嵌套,分两个部分进行打印. 第一部分为上半部分前四行,他们是递增的关系,后半部分后三行为递减关系,由此可以得出我们需要写两个打的循环.并且由 ...

  2. java打印菱形(Java打印菱形图案)

    如何用java语句打印菱形 既然要求死了是*,就好办了,看我的程序 public class test public static void main(String []args) String a= ...

  3. java打印菱形代码_Java打印菱形高效简洁代码

    importjava.util.Scanner;publicclass打印菱形{publicstaticvoidmain(String[]args){/**菱形******************** ...

  4. Java打印菱形与空心菱形

    打印菱形尤其是空心菱形对于初学者来说有一定难度,熟练掌握了for循环后,还是可以打印出来的 分析:1.先打印上半部分,再打印下半部分 2.找准空格与星号之间的关系,然后再打印 3.上半部分每一行数目分 ...

  5. Java 打印菱形星块

    题目描述 编写一个程序,输入1个正整数n,若n为奇数则打印n行的菱形星块:若n为偶数,则提示继续输入,直到输入一个奇数为止. 完整的运行结果如下(其中10和7是输入信息其余的是输出信息): 请输入n: ...

  6. Java打印菱形(空格菱形)(星星之间有空格)

    打印如下图形: *       * *      * * * *    * * * * * *  * * * * * * * *    * * * * * *      * * * *        ...

  7. java.打印菱形_利用java程序打印空菱形

    public class Test1 { public static void main(String[] args) { // TODO Auto-generated method stub int ...

  8. java程序输出实心菱形,使用java打印菱形(实心)

    声明:图形的打印考验的是逻辑思维能力,与计算机语言熟练程度无关.逻辑思维能力弱的同鞋,做不了研发可以做开发. 一.效果图 代码: package com.test; /** * 实心菱形 * * @a ...

  9. java 打印菱形和空心菱形

    显示效果是这样的: 代码如下: int hangshu = 11;int yiban = hangshu / 2 + 1;int yibanduo = hangshu / 2;System.out.p ...

最新文章

  1. 龙芯架构应用迁移技术分享——搜狗输入法应用迁移
  2. 首次使用mysql_mysql的初次使用操作
  3. 2018新年感谢,写在互联网类脑架构研究十年的前夜
  4. 日志按照天自动输出_性能测试和接口自动化测试
  5. asp.net treeView 节点 点击 变色
  6. form表单提交数据编码方式和tomcat接受数据解码方式
  7. k8s service:ingress
  8. 2013第四届蓝桥杯Java组省赛题解析
  9. python独立log示例_带有Python示例的math.log()方法
  10. fzu 2109 Mountain Number 数位DP
  11. ubuntu 14.04配置lamp粗略
  12. python批量安装第三方库_使用Python批量安装第三方库
  13. UIScrollView, 滚动视图
  14. 在ashx文件中使用Session
  15. 计算机系统三员试题,2013年计算机软考程序员试题及答案3
  16. Nvidia驱动支持的linux版本,完善支持 NVIDIA显卡Linux驱动275.19正式版
  17. SPSS基础数据操作之变量的计算及个案计数
  18. 完整的连接器设计手册_连接器退化机理是什么?(一)
  19. nxp单片机入门_使用恩智浦MCUXpresso开发FRDM-KL46Z入门
  20. php合成flv,用php将任何格式视频转为flv

热门文章

  1. 全新锂电池充电板,让充电更加安全
  2. 关于复制文件或文件夹时提示没有足够的可用磁盘空间的解决办法-释放磁盘空间,磁盘整理
  3. Python爬虫爬取最好吃的小龙虾店
  4. 轨道列车救援VR模拟仿真系统
  5. 利用oauth2.0获取微信用户基本信息 java_Magicodes.WeiChat——使用OAuth 2.0获取微信用户信息...
  6. java图书管理系统,javaSwing图书管理系统学习心得
  7. PS将PNG图片内外发光和变色
  8. 小司机带你用Java新特性之Lambda表达式
  9. java 定时任务哪个好_Java定时任务
  10. 新年争做金花王——今年守岁玩什么,短信金花任你游!