总体分析:

  首先,不论打印平面图形或者3D图形,都是采用分层打印的方法;对于程序打印平面规律图形来说,可以利用双重循环进行打印,外层循环控制打印的层数,内层循环控制每一层打印的内容,当打印完一层后,就换行打印下一层。

1:打印实心钻石

  代码如下:

package net.algchallenge;import java.util.Scanner;public class PrintSolidDiamond {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//注意:因为是同一行要打印多个空白和星星,所以要利用System.out.print();然后当打印了钻石的一行的时候就启动换行,不然所有的空白和星星都在同一行里while (true) {System.out.print("row = ");int row = sc.nextInt();//定义钻石的行数if (row % 2 == 0) {//如果钻石的行数为偶数row++;//钻石行数为偶数时,行数+1,就可以实现行数为奇数时的上下对称情况for (int i = 1; i <= row; i++) {if (i <= row / 2) {for (int j = 1; j <= row / 2 - i + 1; j++) {//打印空白:当打印的是钻石的上层时,空白的个数成递减趋势,所以要使用row - i的形式System.out.print(" ");}for (int j = 1; j <= 2 * i - 1; j++) {System.out.print("*");//打印星星:当打印的是钻石上层的时候,星星个个数成递增趋势,并且每一行的个数为2*i-1}System.out.println();} else {//打印下层的星星和空白,可根据上层推导而来for (int j = 1; j <= i - (row / 2 + 1); j++) {System.out.print(" ");}for (int j = 1; j <= 2 * (row - i) + 1; j++) {System.out.print("*");}System.out.println();}}} else {//如果钻石的行数为奇数for (int i = 1; i <= row; i++) {if (i <= row / 2) {for (int j = 1; j <= row / 2 - i + 1; j++) {System.out.print(" ");}for (int j = 1; j <= 2 * i - 1; j++) {System.out.print("*");}System.out.println();} else {for (int j = 1; j <= i - (row / 2 + 1); j++) {System.out.print(" ");}for (int j = 1; j <= 2 * (row - i) + 1; j++) {System.out.print("*");}System.out.println();}}}}}
}

效果如图:

2:打印空心钻石

  分析:打印空心钻石相比实心钻石没有太大区别,只是在打印每一层具体内容的时候,加了一些判断条件。
代码如下:

package net.algchallenge;import java.util.Scanner;public class PrintHollowDiamond {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (true) {System.out.print("row = ");int row = sc.nextInt();if (row % 2 != 0) {for (int i = 1; i <= row; i++) {if (i <= row / 2) {for (int j = 1; j <= row / 2 - i + 1; j++) {System.out.print(" ");}for (int j = 1; j <= 2 * i - 1; j++) {if (i > 1 && i <= row / 2) {if (j > 1 && j < 2 * i - 1) {System.out.print(" ");} else {System.out.print("*");}} else {System.out.print("*");}}System.out.println();} else {for (int j = 1; j <= i - (row / 2 + 1); j++) {System.out.print(" ");}for (int j = 1; j <= 2 * (row - i) + 1; j++) {if (i >= row / 2 + 1 && i < row) {if (j > 1 && j < 2 * (row - i) + 1) {System.out.print(" ");} else {System.out.print("*");}} else {System.out.print("*");}}System.out.println();}}} else {row++;for (int i = 1; i <= row; i++) {if (i <= row / 2) {for (int j = 1; j <= row / 2 - i + 1; j++) {System.out.print(" ");}for (int j = 1; j <= 2 * i - 1; j++) {if (i > 1 && i <= row / 2) {if (j > 1 && j < 2 * i - 1) {System.out.print(" ");} else {System.out.print("*");}} else {System.out.print("*");}}System.out.println();} else {for (int j = 1; j <= i - (row / 2 + 1); j++) {System.out.print(" ");}for (int j = 1; j <= 2 * (row - i) + 1; j++) {if (i >= row / 2 + 1 && i < row) {if (j > 1 && j < 2 * (row - i) + 1) {System.out.print(" ");} else {System.out.print("*");}} else {System.out.print("*");}}System.out.println();}}}}}
}

效果如图:

Java打印实心和空心钻石相关推荐

  1. Java打印实心和空心菱形

    Java打印实心和空心菱形 public static void main(String[] args) {System.out.println("请输入需要打印的菱形行数:"); ...

  2. c语言打印空心数字图形,(完整word版)C语言编写打印实心和空心菱形【源码】

    <(完整word版)C语言编写打印实心和空心菱形[源码]>由会员分享,可在线阅读,更多相关<(完整word版)C语言编写打印实心和空心菱形[源码](13页珍藏版)>请在人人文库 ...

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

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

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

    由于我已经知道我需要的菱形是什么样,所以我的思路是把菱形分为上下两部分先打印上半部分,再打印下半部分: 实心菱形: 第一个for循环限定菱形的行数,第二个for循环限定打印空格,第三个for循环打印* ...

  5. Java打印实心菱形和空心菱形

      菱形还算比较简单的图形,主要是观察一下规律,而不要盲目的想着什么拆分成上下两部分,实际上规律很好找.基本上只需要高中的数学知识就可以了,简单的算法然后取绝对值即可!注意行数为正奇数3.5.7.9- ...

  6. c语言循环结构菱形九九乘法表,C语言基础用基本的循环语句打印实心和空心菱形、九九乘法表 ....

    //菱形 #include void main() { int i,j; //菱形的上半部分的三角形 for(i=0;i<4;i++) { for(j=3;j>i;j--) { print ...

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

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

  8. C语言基础用基本的循环语句打印实心和空心菱形、九九乘法表

    //菱形 #include <stdio.h> void main() {int i,j;//菱形的上半部分的三角形 for(i=0;i<4;i++){for(j=3;j>i; ...

  9. php用打印出实心菱形,php打印实心菱形

    编程打印实心菱形的四种算法 刘雨玚 [期刊名称]<福建电脑> [年(卷),期]2016(032)004 [摘要]本文提出了编程打印实心菱形的四种算法,其中前三种方法都是将实 心菱形分为上下 ...

最新文章

  1. 被文字凝聚的民族大爱
  2. CentOS 6.6编译安装Squid 配置反向代理服务器
  3. Linq to xml API中 XName 的奇怪实现
  4. python的数值类型和运算符_python的数值类型和运算符
  5. vs 无法解析变量$_C语言新手常见错误(Vs使用,语法...),绝对直击痛点
  6. svg配合css3动画_带有Adobe Illustrator,HTML和CSS的任何网站的SVG动画
  7. 前端学习(1662):前端系列实战课程之div跟随鼠标移动
  8. pdf sdk for android,Android 自带PDF SDK
  9. 推荐几款代码检查工具,淘宝开源代码质量检测工具
  10. 关于计算机算法学习路线(持续更新)
  11. c语言程序设计数组说课,C语言程序设计说课PPT课件(超好)
  12. 传统车道线检测之黄白线、虚实车道线检测(附python代码)
  13. win10系统wifi图标不见了,如何链接无线网
  14. SFP光模块怎么配对光纤线缆
  15. 该怎么复习安徽省考计算机专业课
  16. 个人QQ号码推广代码
  17. 以太坊(Ethereum) - 让浏览器支持区块链(MetaMask)
  18. 超市收银软件测试自学,pos前台收银员培训 免费超市收银软件 视频教程
  19. mysql删去root用户无法登录_MySQL误删root用户导致无法登陆解决方法
  20. To 重度拖延症患者

热门文章

  1. 基于微信小程序的音乐播放器的设计与实现(附带毕业设计报告和源码程序)
  2. 虎牙直播真的靠谱吗?进来看了就知道
  3. 升级鸿蒙后听筒声音会加强吗,xr升级到13.3听筒怎么声音变小了?
  4. win10误删的注册表能还原吗_win10误删注册表文件如何恢复 - 驱动管家
  5. 从万众期待到口碑扑街!唐探3令人失望,用Python来分析一下大家的评论
  6. 基于等波纹最佳逼近法的FIR数字滤波器实现matlab仿真
  7. sublime处理excel多列变为一行的数据
  8. android播放资源音乐,android音乐播放器_专辑列表
  9. MySQL高级之SQL调优
  10. REVIT按草图绘制楼梯(楼梯篇)