java打印菱形及直角和等腰三角形的方法
作者:铠冢?霙 发布时间:2023-01-08 20:46:55
本文讲述如何用Java打印一个菱形,以及打印直角和等腰三角形的方法, 本文教程比较详细,如果想要直接学习菱形可以直接翻到本文最下方!!!
左下角三角形
(这里说的方位均是对应矩形来说)
int a = 5;
for (int i = 0; i < a; i++) {
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
这段代码将输出如下图形,,其中i<?控制输出行数,j<?控制输出列数
这里j<i,且关于j的循环嵌套在关于i的递增循环里,所以列数(也是每行的数量)会随着行数的增加而增加,最终形成一个左下角方位的三角形
(这里输出*号语句要用System.out.print();避免换行。最下面的 System.out.println()是起换行作用; )
右下角三角形
int a = 5;
for (int i = 0; i <= a; i++) {
for (int k = a; k > i; k--) {
System.out.print(" ");
}
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
这段代码将输出如下图形,这里增加了一个关于k的for循环,它的作用是在原本左下角的基础上在每行输出的*号之前增加空格,注意这里输出空格同样使用System.out.print();避免换行,因为k的循环是k--的递减循环,所以从i开始递减输出空格,就会形成一盒右下角的三角形。
正等腰三角形
int a = 5;
for (int i = 0; i <= a; i++) {
for (int k = a; k > i; k--) {
System.out.print(" ");
}
for (int j = 0; j < 2*i-1; j++) {
System.out.print("*");
}
System.out.println();
}
这段代码将输出如下结果,观察下面的实际输出图片就会发现其实很好理解,只是将原来的右下角三角形输出的*号改为了1、3、5、7、9的奇数排列,我们可以利用规律,将控制每行数量的j改为2*i-1实现,同理利用不同公式可以控制每行的数量。
实际全部输出为
这里我们已经解决了菱形的上半部分
左上角三角形
int a =5 ;
for (int i = 0; i < a; i++) {
for (int j = a; j > i; j--) {
System.out.print("*");
}
System.out.println();
}
这段代码将输出如下结果,左上角就是倒过来打印左下角三角形,所以只需要让每行的*号递减即可,所以只用改变关于j的循环就可,让其初始值为最大,并将迭代器改为j--就可以实现此效果
右上角三角形
int len =5 ;
for (int i = 0; i < len; i++) {
for (int k = 0; k < i; k++) {
System.out.print(" ");
}
for (int j = len; j > i; j--) {
System.out.print("*");
}
System.out.println();
}
这段代码讲输出如下结果,这与左下三角和右下三角的本质相似,就是在输出的*号前面增加空格,不过这里是倒叙输出,那么相应输出空格的程序也要反过来。
倒等腰三角形
int a =5 ;
for (int i = a; i > 0; i--) {
for (int k = a; k >= i; k--) {
System.out.print(" ");
}
for (int j = 2*i-1; j > 0; j--) {
System.out.print("*");
}
System.out.println();
}
这段代码将输出如下结果,对比全部输出内容,可以看到原理与正等腰三角类似,只是颠倒输出顺序,就不过多赘述这个问题了。
菱形
实际上菱形就是一正一反两个三角形拼接而成,拆解过后,我们就知道可以通过输出正反等腰三角形就可以组成菱形。
int a = 5;
//正等腰三角形
for (int i = 0; i < a; i++) {
for (int l = a; l > i; l--) {
System.out.print(" ");
}
for (int j = 0; j < 2*i-1; j++) {
System.out.print("*");
}
System.out.println();
}
//倒等腰三角形
for (int i = a-1; i > 0; i--) {
for (int k = a; k >= i; k--) {
System.out.print(" ");
}
for (int j = 2*i-3; j > 0; j--) {
System.out.print("*");
}
System.out.println();
}
这段代码将输出如下结果,两个三角形输出的原理上面有详细解析,这里讲需要注意的地方,
输出下面的三角形的时候要将行数(即i的初始值)减去1,因为菱形中间的转折线要比上下两边都长,我们已经使用了上面的最长边,下面的三角形就应该省略,减去1后在开始(也可以让上面减少一次输出)。
2.因为行数减1了,所以对应的输出数量也要减掉,因为每行是增加2个,所以每一行输出的数量都应该额外减去2,所以j的初始值应该是2i-3;
这就是利用java输出一个菱形的方法,希望对大家有所帮助!!!
来源:https://blog.csdn.net/m0_73932182/article/details/128503820
猜你喜欢
- 冒泡排序:就是按索引逐次比较相邻的两个元素,如果大于/小于(取决于需要升序排还是降序排),则置换,否则不做改变这样一轮下来,比较了n-1次,
- PrintStream 介绍PrintStream 是打印输出流,它继承于FilterOutputStream。PrintStream 是用
- 1. 你知道volatile是如何保证可见性吗?我们先看一组代码:public class VolatileVisibleDemo { &n
- 这里介绍一个简易的音乐播放器,供大家参考,具体内容如下效果图如下:但是,由于这是一个简易版的音乐播放器,所播放的音乐只有一首,且被写死,但,
- 最近学习了一下seata,由于nacos现在也挺火,于是学习了seata注册到nacos,然后集成springcloud1.nacos配置(
- kafka消费不到数据的排查集群上新安装并启动了3个kafka Broker,代码打包上传至集群,运行后发现一直消费不到数据,本地
- 一.理论准备KMP算法为什么比传统的字符串匹配算法快?KMP算法是通过分析模式串,预先计算每个位置发生不匹配的时候,可以省去重新匹配的的字符
- 目录一、什么是Spring二、什么是IOC三、快速搭建框架环境四、spring之依赖注入五、详解Spring框架的IOC之注解方式七、Spr
- 大多数网站会设置用户权限,如过滤非法用户,用户不登录时不能进行访问,或者设置访问的权限,如部分内容仅对VIP开放等等,这些权限的控制都可以用
- 本文实例分析了Java接口默认方法带来的问题。分享给大家供大家参考,具体如下:一 点睛Java 8中,如果一个类实现两个或多个接口,即“变相
- 标识接口是没有任何方法和属性的接口。标识接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型。标接口在Java语言中
- spring.thymeleaf.cache=false不起作用配置是清除缓存,实现热部署。也就是修改了html后不用重启,刷新页面就能看到
- Java中的引用类型有哪几种?Java中的引用类型分成 强引用 , 软引用 , 弱引用 , 虚引用 。1、强引用没有引用指向这个对象,垃圾回
- Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsof
- 本文实例为大家分享了Java实现图书借阅系统的具体代码,供大家参考,具体内容如下为图书阅览室开发一个图书借阅系统,最多可存50本图书,实现图
- Kotlin开发Android应用实例详解我们简单的知道了Kotlin这门新语言的优势,也接触了一些常见的语法及其简单的使用,相信你会对它有
- 本文实例为大家分享了Unity2D游戏回旋镖实现的具体代码,供大家参考,具体内容如下以下我举出2种同使用情况的回旋镖那么回旋镖需要怎么做呢?
- 引入为什么突然说一下Spring启动原理呢,因为之前面试的时候,回答的那可谓是坑坑洼洼,前前后后,补补贴贴。。。总而言之就是不行,再次看一下
- Ben Evans是一名资深培训师兼顾问,他在演讲可视化垃圾回收中从基础谈起讨论了垃圾回收。以下是对其演讲的简短总结。基础当谈到释放不再使用
- 需要引入命名空间:using System;using System.Text;解码: public static string