JAVA实现实心菱形和空心菱形
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实现实心菱形和空心菱形相关推荐
- Java打印菱形与空心菱形
打印菱形尤其是空心菱形对于初学者来说有一定难度,熟练掌握了for循环后,还是可以打印出来的 分析:1.先打印上半部分,再打印下半部分 2.找准空格与星号之间的关系,然后再打印 3.上半部分每一行数目分 ...
- JAVA中for循环来制作正方形、长方形、平行四边形、三角形、菱形、空心菱形
利用for循环来制作图形 一.代码 1.正方形 2.长方形 3.平行四边形 4.三角形 5.菱形 6.空心菱形 7.效果图 总结 一.代码 1.正方形 代码如下(示例): public class H ...
- Java循环练习——打印菱形、空心菱形、叉号
Java循环练习--打印菱形.空心菱形.叉号 使用for循环实现打印不同的图形 菱形 效果: 代码: public class Test1{public static void main(String ...
- python菱形_python如何输出菱形与空心菱形详解与巧妙地使用center方法
首先应该了解菱形在输出时,每一行的组成有哪些规律,并且除了中间的一行,上部分和下半部分应该是对称的 这是一个我们要准备输出的一个菱形的模板 ,一共有7行 7列 我们设菱形上半部分的总行数为rows,当 ...
- 利用JS中的循环语句来实现正方形、长方形、平行四边形、三角形、菱形、空心菱形。
利用JS来制造图形 代码 1.正方形 2.长方形 3.平行四边形 4.三角形 5.菱形 6.空心菱形 7.效果图 总结 代码 1.正方形 代码如下(示例): <script>for (va ...
- JavaScript 打印菱形,空心菱形
//打印菱形方法一 //控制台打印 let sp = 10 for (let i = 1; i <= 10; i += 2) {console.log(' '.repeat(--sp) + '* ...
- java实心菱形_java打印出实心菱形与空心菱形
/** * 实心菱形 */ public static void method8() { System.out.print("请输入实心菱形的行数:"); int n = in.n ...
- Java打印实心菱形和空心菱形
菱形还算比较简单的图形,主要是观察一下规律,而不要盲目的想着什么拆分成上下两部分,实际上规律很好找.基本上只需要高中的数学知识就可以了,简单的算法然后取绝对值即可!注意行数为正奇数3.5.7.9- ...
- Java打印实心菱形与空心菱形
由于我已经知道我需要的菱形是什么样,所以我的思路是把菱形分为上下两部分先打印上半部分,再打印下半部分: 实心菱形: 第一个for循环限定菱形的行数,第二个for循环限定打印空格,第三个for循环打印* ...
最新文章
- Android之如何获取Android设备的唯一识别码笔记
- go数组详解:数组的定义、遍历、使用细节、二维数组的定义及其遍历
- Java程序员必须掌握的7个Java性能指标!
- [caffe(一)]使用caffe训练mnist数据集
- 【SharePoint 2010】将Sharepoint Server 2010部署到WINDOWS 7
- 【图论】【最短路】【SPFA】【USACO题库】2.4.4 Bessie Come Home回家(jzoj 1274)
- 在服务器中开虚拟机,可以在云服务器上开虚拟机
- php swoole websocket vue 实现聊天室案例
- 2022大厂面试必问要点总结
- java 异常 return_Java异常处理中同时有finally和return语句的执行问题
- JavaWeb 之 HttpServletResponse
- mysql的日备份和周备份_MySQL完全备份
- python线程池如何调度,python线程池控制
- 天锐绿盾教您如何管控外接设备
- html+css+javascript实现乾坤八卦风水罗盘时钟 (免费附源码)
- 程序员培训去哪里?哪里学习程序员
- 淘宝、京东、苏宁易购技术架构分析
- 【WSN定位】基于matlab灰狼算法优化无线传感器非测距定位【含Matlab源码 2008期】
- 关于Docker以及安装方法
- 看不到同一个网络下的其他计算机,看不到局域网其他计算机怎么办