import java.util.Scanner;/*** Created by Nicole Cao on 2018/7/17.*/
public class Lingxing {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入要打印的菱形中间的行数:");int num = input.nextInt();//实现实心菱形solidDiamond1(num); //方法一solidDiamond2(num); //方法二//实现空心菱形hollowDiamond1(num); //方法一hollowDiamond2(num); //方法二}/*** 《方法一》实现实心菱形* 算法思想: 假设菱形中间的行数为 L(该L为已知的输入数), 行数为N(行数从1开始),根据菱形的规律可得出,* 菱形的上半边:每行需要输入(L-N)个空格“ 用b代替空格”和(2N-1)个星号“用*代替星号”。* 即菱形的上半边每一行需要输出的公式为:* 上半边菱形输出 = (L-N)b + (2N-1)*     (公式一)** 菱形的下半边是上半边的倒叙,例如(L+1)行的输出等于(L-1)行的输出,(L+2)=(L-2),以此类推。* 可知:(N-L)是当前行数与中间行数的行差, L-(N-L)则是与当前行相等的上半边菱形的行数,* 即整理公式得: 当前行数 = 对应的上半边菱形的行数 =(2L-N)* 将该上述公式的该行数代入到公式一中,即代入到上半边菱形的输出当中,将公式一中的N带换成(2L-N),可得:* 下半边菱形输出 = (L-(2L-N))b + (2(2L-N)-1)*  = (N-L)b + (4L-2N-1)*** 综上: 可得出菱形中空格和星号的因子,上半边空格因子a = L-N , 上半边星号因子 b = 2N-1 ;* 下半边空格因子a = N-L , 下半边星号因子b = 4L-2N-1** @param L 中间的行数*/public static void solidDiamond1(int L) {for (int N = 1; N <= 2 * L - 1; N++) {int a = L - N;int b = 2 * N - 1;if (N > L) {a = N - L;b = 4 * L - 2 * N -1;}for (int n = 0; n < a; n++) {System.out.print(" ");}for (int k = 0; k < b; k++) {System.out.print("*");}System.out.println();}}/*** 《方法二》实现实心菱形* 算法思想:先输出菱形的上半边即等腰三角形;再输出菱形的下半边,下半边等于除了中间行的上半边倒叙。* 里面有重复的代码,可以进一步优化* @param L 中间的行数*/public static void solidDiamond2(int L) {for (int N = 1; N <= L; N++) {for (int n = 0; n < L - N; n++) {System.out.print(" ");}for (int k = 0; k < 2 * N - 1; k++) {System.out.print("*");}System.out.println();}for (int N = L - 1; N > 0; N--) {for (int n = 0; n < L - N; n++) {System.out.print(" ");}for (int k = 0; k < 2 * N - 1; k++) {System.out.print("*");}System.out.println();}}/*** 《方法一》实现空心菱形* 算法思想:同实心菱形方法一中的算法思想一样,只是在输出菱形时每一行只输出第一个和最后一个星号。* @param L 中间的行数*/public static void hollowDiamond1(int L) {for (int N = 1; N <= 2 * L - 1; N++) {int a = L - N;int b = 2 * N - 1;if (N > L) {a = N - L;b = 4 * L - 2 * N -1;}for (int n = 0; n < a; n++) {System.out.print(" ");}for (int k = 0; k < b; k++) {if (k == 0 || k == b - 1) {System.out.print("*");} else {System.out.print(" ");}}System.out.println();}}/*** 《方法二》实现空心菱形* 算法思想:同实心菱形方法二中的算法思想一样,只是在输出菱形时每一行只输出第一个和最后一个星号。* @param L 中间的行数*/public static void hollowDiamond2(int L) {for (int N = 1; N <= L; N++) {for (int n = 0; n < L - N; n++) {System.out.print(" ");}for (int k = 0; k < 2 * N - 1; k++) {if(k == 0 || k == 2 * N - 2) {System.out.print("*");} else {System.out.print(" ");}}System.out.println();}for (int N = L - 1; N > 0; N--) {for (int n = 0; n < L - N; n++) {System.out.print(" ");}for (int k = 0; k < 2 * N - 1; k++) {if(k == 0 || k == 2 * N - 2) {System.out.print("*");} else {System.out.print(" ");}}System.out.println();}}}

输出结果如下图:

JAVA实现实心菱形和空心菱形相关推荐

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

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

  2. JAVA中for循环来制作正方形、长方形、平行四边形、三角形、菱形、空心菱形

    利用for循环来制作图形 一.代码 1.正方形 2.长方形 3.平行四边形 4.三角形 5.菱形 6.空心菱形 7.效果图 总结 一.代码 1.正方形 代码如下(示例): public class H ...

  3. Java循环练习——打印菱形、空心菱形、叉号

    Java循环练习--打印菱形.空心菱形.叉号 使用for循环实现打印不同的图形 菱形 效果: 代码: public class Test1{public static void main(String ...

  4. python菱形_python如何输出菱形与空心菱形详解与巧妙地使用center方法

    首先应该了解菱形在输出时,每一行的组成有哪些规律,并且除了中间的一行,上部分和下半部分应该是对称的 这是一个我们要准备输出的一个菱形的模板 ,一共有7行 7列 我们设菱形上半部分的总行数为rows,当 ...

  5. 利用JS中的循环语句来实现正方形、长方形、平行四边形、三角形、菱形、空心菱形。

    利用JS来制造图形 代码 1.正方形 2.长方形 3.平行四边形 4.三角形 5.菱形 6.空心菱形 7.效果图 总结 代码 1.正方形 代码如下(示例): <script>for (va ...

  6. JavaScript 打印菱形,空心菱形

    //打印菱形方法一 //控制台打印 let sp = 10 for (let i = 1; i <= 10; i += 2) {console.log(' '.repeat(--sp) + '* ...

  7. java实心菱形_java打印出实心菱形与空心菱形

    /** * 实心菱形 */ public static void method8() { System.out.print("请输入实心菱形的行数:"); int n = in.n ...

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

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

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

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

最新文章

  1. Apache 基金会发布2018财年年报:Java 项目占大半
  2. Selenium2+python自动化1(环境安装)
  3. python+selenium个人学习笔记10-调用JavaScript和截图
  4. C#中string类型赋值问题
  5. 阿里妈妈流量反作弊算法实践
  6. 【渝粤教育】国家开放大学2018年春季 0341-22T高级英语听力(2) 参考试题
  7. numpy将所有数据变为0和1_PyTorch 学习笔记(二):张量、变量、数据集的读取、模组、优化、模型的保存和加载...
  8. 数字头盔摄像头是一个智能选项
  9. 算法设计——荷马史诗(K叉哈夫曼 贪心)
  10. 宽搜入门代码模板详解 HDOJ1253
  11. 前端工程师之华为手机如何打开开发者模式并进行手机调试查看原生APP效果。
  12. 快速掌握消息队列RabbitMQ
  13. 你愿意做高学历却抑郁的人,还是低学历开心的人?(持续更新中)
  14. excel中怎么显示数字/英文时间
  15. 微小宝公众号排行榜_公众号排名 | 2020年2月公众号地区排行榜重磅发布
  16. 使用视频下载工具 you-get 下载视频
  17. C语言版桌球游戏台球游戏源代码,含完整程序设计文档及答辩PPT,含可执行文件
  18. NY8A051F 6 I/O 8-bit EPROM-Based MCU 台湾九齐单片机
  19. Rendering Engine 主流的浏览器内核(排版引擎、渲染引擎、解释引擎)有哪几种,分别的特点...
  20. 设计模式--访问者模式(Visitor)

热门文章

  1. 什么是Ubuntu PPA以及为什么要用它[技术说明]
  2. 【鲁棒优化、大M法、CCG算法】计及风、光、负荷不确定性两阶段鲁棒优化(Matlab代码实现)
  3. 唯品会不同阶段发展历程的技术演进
  4. Linux基于Bind9搭建dns服务器
  5. lay-verify
  6. image 图片生产XPS文件
  7. 服务端渲染ssr(server side render)
  8. 强者马斯克,赢家特斯拉!
  9. 【IPAVS】AV多媒体管理控制中心,AV媒体矩阵
  10. 【手撕代码】HDB3编解码