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. Android之如何获取Android设备的唯一识别码笔记
  2. go数组详解:数组的定义、遍历、使用细节、二维数组的定义及其遍历
  3. Java程序员必须掌握的7个Java性能指标!
  4. [caffe(一)]使用caffe训练mnist数据集
  5. 【SharePoint 2010】将Sharepoint Server 2010部署到WINDOWS 7
  6. 【图论】【最短路】【SPFA】【USACO题库】2.4.4 Bessie Come Home回家(jzoj 1274)
  7. 在服务器中开虚拟机,可以在云服务器上开虚拟机
  8. php swoole websocket vue 实现聊天室案例
  9. 2022大厂面试必问要点总结
  10. java 异常 return_Java异常处理中同时有finally和return语句的执行问题
  11. JavaWeb 之 HttpServletResponse
  12. mysql的日备份和周备份_MySQL完全备份
  13. python线程池如何调度,python线程池控制
  14. 天锐绿盾教您如何管控外接设备
  15. html+css+javascript实现乾坤八卦风水罗盘时钟 (免费附源码)
  16. 程序员培训去哪里?哪里学习程序员
  17. 淘宝、京东、苏宁易购技术架构分析
  18. 【WSN定位】基于matlab灰狼算法优化无线传感器非测距定位【含Matlab源码 2008期】
  19. 关于Docker以及安装方法
  20. 看不到同一个网络下的其他计算机,看不到局域网其他计算机怎么办

热门文章

  1. 【真人手指动画制作软件】万彩手影大师教程 | 添加背景
  2. Java获取中文汉字拼音首字母方法一(更快速)
  3. 边下边看的BT资源搜索下载工具:Tribler for Mac
  4. 宽带市场开启烧钱模式 民资入场容易留下难
  5. Docker系列七安装私人云盘
  6. CUG中国地质大学(武汉)现代软件工程智慧工地用例图
  7. android webview加载html图片自适应手机屏幕大小点击查看大图
  8. 联阳IT1167主控量产工具教程
  9. 再见阳朔-记在2010圣诞
  10. 微信小程序 WXSS和CSS的区别?什么是WXSS?