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


猜你喜欢
- 或是将Datagrid或是Gridview的输出导出,实现大体上又分为调用COM+组件或是利用Response(当然是B/S架构的项目)的输
- 前言WebJar官网:https://www.webjars.org/,对于任何与Servlet 3兼容的容器,WEB-INF/lib目录中
- 一般来说应用中比较常见的是折线图,直方图这种比较多,今天来写一个项目中的需求曲线图,也是在之前的折线图基础上改进而来,看效果图主要考虑曲线的
- 本文实例为大家分享了Android CameraManager类的具体代码,供大家参考,具体内容如下先看代码: private
- 前言身在孤岛有很多无奈,比如说程序员属于比较偏门的职业。尤其是早些年,在行业里跳过几次槽后,可能你就已经认识整个圈子的人了。然后,再跳槽很可
- C#删除指定文件或文件夹public static string deleteOneFile(string fileFullPath) &n
- 实例如下:一 json optString 解析的TimesTamp string二 long dateSec = (long) (Doub
- 本文实例讲述了Android编程设计模式之迭代器模式。分享给大家供大家参考,具体如下:一、介绍迭代器模式(Iterator Pattern)
- FileWriter/FileReader介绍:FileWriter 类从 OutputStreamWriter 类继承而来。该类按字符向流
- 内存分配方式简介在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈:在执行函数时,函数内局部变量的存
- 目录关于日志级别为什么选用log4j2排除 spring-boot 自带的 logback 依赖添加 log4j2 依赖配置文件节点解析根节
- 本文以一个asp.net程序为例讲述了Repeater中添加按钮实现点击按钮获取某一行数据的方法,分享给大家供大家参考借鉴之用。具体步骤如下
- 本文演示android中图片加载到内存首先设计界面:代码如下:<LinearLayout xmlns:android="ht
- 前言对于数组遍历,基本上每个开发者都写过,遍历本身没什么好说的,但是当我们在遍历的过程中,有一些复杂的业务逻辑时,将会发现代码的层级会逐渐加
- 一:模式说明模式定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求
- 本文实例讲述了Android基于OpenGL在GLSurfaceView上绘制三角形及使用投影和相机视图方法。分享给大家供大家参考,具体如下
- java中的set接口有如下的特点:不允许出现重复元素;集合中的元素位置无顺序;有且只有一个值为null的元素。因为java中的set接口模
- 实体类时间格式化java 实体类 时间格式化注解@JsonFormat(pattern = "yyyy-MM-dd HH:mm:s
- 首先说说什么叫回调函数?在WINDOWS中,程序员想让系统DLL调用自己编写的一个方法,于是利用DLL当中回调函数(CALLBACK)的接口
- Java环境部署下载所需软件和依赖安装 jdk路径可选别的盘。但是指向时得注意我自己时装在 F 盘的,在f盘里新建文件夹 Java,Java