
Java通过非常简单的方法打印任意行数的实心菱形和空心菱形
发布日期:2021-05-14 23:02:02
浏览次数:21
分类:精选文章
本文共 1702 字,大约阅读时间需要 5 分钟。
菱形图形生成代码解析
菱形的图形生成其实非常简单,只需要掌握几个基本的规律和算法即可。对于这个问题,关键在于理解菱形的结构以及如何通过代码来控制其行数和每一行的内容。
实心菱形的实现
实心菱形的代码非常基础,主要是通过控制空白和星号的数量来构建菱形。以下是实现实心菱形的代码:
@Testpublic void test9() { Scanner scanner = new Scanner(System.in); // 行数 int i = scanner.nextInt(); for (int j = 0; j < i; j++) { // 空白部分 for (int k = 0; k < Math.abs(i / 2 - j); k++) { System.out.print(" "); } // *部分 for (int k = 0; k < i - 2 * Math.abs(i / 2 - j); k++) { System.out.print("*"); } System.out.println(); }}
这个代码的工作原理是通过计算每一行的空白和星号的数量来构建菱形。具体来说,i
是输入的行数,j
是当前处理的行索引。对于每一行,我们首先计算该行的空白数量,即 Math.abs(i / 2 - j)
,然后计算星号的数量,即 i - 2 * Math.abs(i / 2 - j)
。通过打印空白和星号,我们就能逐行构建出菱形的图形。
空心菱形的实现
为了生成空心菱形,我们可以在实心菱形的基础上进行一些简单的修改。空心菱形的特点是每一行的星号部分中间有空隙。以下是实现空心菱形的代码:
@Testpublic void test10() { Scanner scanner = new Scanner(System.in); // 行数 int i = scanner.nextInt(); for (int j = 0; j < i; j++) { // 空白部分 for (int k = 0; k < Math.abs(i / 2 - j); k++) { System.out.print(" "); } // *部分 for (int k = 0; k < i - 2 * Math.abs(i / 2 - j); k++) { if (k == 0 || k == i - 2 * Math.abs(i / 2 - j) - 1) { System.out.print("*"); } else { System.out.print(" "); } } System.out.println(); }}
这个代码与实心菱形的代码相似,但在星号部分增加了一个条件判断:只有在星号的首位置或者末位置时才打印星号,其他位置则打印空白。这样就形成了空心菱形的效果。
代码解析总结
通过上述代码,我们可以看到,菱形的生成其实并不复杂。关键在于理解菱形的对称性以及如何通过循环和条件来控制图形的构建。其中,Math.abs(i / 2 - j)
用于计算每一行的对称位置,这样可以确保菱形的对称性。i - 2 * Math.abs(i / 2 - j)
则用于计算当前行的星号数量,确保每一行的星号数量随着行数的增加而增加。
总的来说,只要掌握了这些基本的算法和对称性计算,菱形的生成就非常简单。通过这些代码,我们可以轻松生成不同大小和不同风格的菱形图形。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月19日 17时24分15秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux kernel pwn --- CSAW2015 StringIPC
2019-03-12
2020 05 02 记录思考
2019-03-12
2020-05-31 py执行时超时控制
2019-03-12
一段强大的shellcode
2019-03-12
双链表相加问题
2019-03-12
GB2312-80 汉字机内码
2019-03-12
n的a进制数
2019-03-12
配置jdk的环境变量
2019-03-12
【C++ Primer 第五版】处理类型
2019-03-12
echo命令的颜色及同行显示控制
2019-03-12
CentOS7利用Systemd添加用户自定义系统服务
2019-03-12
懒人HTML5笔记-1
2019-03-12
两台服务器http方式共享yum软件仓库
2019-03-12
团队背包(team)
2019-03-12
java字节流与字符流的区别
2019-03-12
Mysql 批量杀死进程
2019-03-12
spring tx:advice 和 aop:config 配置事务
2019-03-12
修改layui的后台模板的左侧导航栏可以伸缩
2019-03-12