java;打印菱形

article/2025/10/1 6:15:40

本文讲述如何用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();
}

这段代码将输出如下结果,两个三角形输出的原理上面有详细解析,这里讲需要注意的地方,

  1. 输出下面的三角形的时候要将行数(即i的初始值)减去1,因为菱形中间的转折线要比上下两边都长,我们已经使用了上面的最长边,下面的三角形就应该省略,减去1后在开始(也可以让上面减少一次输出)。

2.因为行数减1了,所以对应的输出数量也要减掉,因为每行是增加2个,所以每一行输出的数量都应该额外减去2,所以j的初始值应该是2i-3;

这就是利用java输出一个菱形的方法,希望对大家有所帮助

感谢阅读!!!


http://chatgpt.dhexx.cn/article/qhtB3PGG.shtml

相关文章

拓扑排序算法详解(通俗且详细)

数据结构第9章图——拓扑排序 … … …

【C语言】拓扑排序算法

文章目录 AOV网拓扑排序算法实现步骤代码实现 AOV网 在一个工程的有向图中&#xff0c;用顶点表示活动&#xff0c;用弧表示活动之间的优先关系&#xff0c;这样的有向图为顶点表示活动的网&#xff0c;我们称为AOV网&#xff08;Activity on Vertex Network&#xff09;。AOV…

图论算法-拓扑排序:专题

是什么 有向图中&#xff0c;对所有的节点进行排序&#xff0c;要求没有一个节点指向它前面的节点。 怎么做 步骤 遍历到所有入度为0的节点&#xff0c;加入队列&#xff1b;如果没有这样的点&#xff0c;说明有向图构成环&#xff0c;则该图无解&#xff0c;结束算法找到与…

基于DFS的拓扑排序算法实现

对于有向无环图G中的任意结点u,v,它们之间的关系必然是以下三种之一&#xff1a; &#xff08;1&#xff09;假设结点u是结点v的祖先&#xff0c;则在调用DFS访问u的过程中&#xff0c;必然会在这个过程结束之前递归地对v调用DFS访问&#xff0c;即v的DFS函数结束时间现语u的D…

【排序算法】排序算法-拓扑排序

拓扑排序 相关概念AOV网拓扑排序 实现思路实现过程 代码测试测试类测试样例 相关概念 AOV网 一项大的工程常被分为多个小的子工程 子工程之间可能存在一定的先后顺序&#xff0c;即某些子工程必须在其他的一些子工程完成后才能开始 在现代化管理中,人们常用有向图来描述和分析…

算法提升:图的拓扑排序算法

目录 概念 思路 代码 概念 拓扑序列&#xff1a;一些活动&#xff0c;其中某些活动必须在另一些活动完成之后才能开始&#xff0c;一定是无环的有向图&#xff0c;称为AOV网。 拓扑排序&#xff0c;其实就是对一个有向图构造拓扑序列的过程。构造时会有两个结果&#xff1a…

leetcode-拓扑排序算法

拓扑排序原理 拓扑排序算法分析&#xff08;通俗易懂&#xff09;_hongjie_lin-CSDN博客_拓扑排序算法 207 课程表 bfs和dfs都可以。先来看一下bfs。 思路是&#xff1a;入度法&#xff0c;入度为0的时候&#xff0c;表示这门课程没有先修课程了&#xff0c;可以学习这门课程了…

2022.3.24 图论——拓扑排序算法

文章目录 一、拓扑排序简介二、例题1.题目2.分析3.代码 一、拓扑排序简介 1.Topological Sorting&#xff0c;指的是一个DAG(Directed Acyclic Graph)即有向图所有顶点满足一定条件的线性序列。 拓扑序列应满足两个条件&#xff1a; 每个点都只出现一次 如果存在一条从A指向B…

数据结构——图——拓扑排序算法

数据结构——图——拓扑排序算法 对AOV网进行拓扑排序的基本思路是:从AOV网中选择一个入度为0的顶点输出&#xff0c;然后删去此顶点&#xff0c;并删除以此顶点为尾的弧&#xff0c;继续重复此步骤&#xff0c;直到输出全部顶点或者AOV 网中不存在入度为0的顶点为止。 首先我…

拓扑排序详解(包含算法原理图解、算法实现过程详解、算法例题变式全面讲解等)

前置知识 有向无环图 在图论中&#xff0c;如果一个有向图无法从某个顶点出发经过若干条边回到该点&#xff0c;则这个图是一个有向无环图&#xff08;DAG图&#xff09;。 如图所示。 入度 对于一个有向图&#xff0c;若x点指向y点&#xff0c;则称x点为y点的入度。 出度…

拓扑排序算法分析(通俗易懂)

拓扑排序&#xff08;其实是一种依赖关系&#xff09;&#xff1a;对于有向且无环的图来说&#xff0c;当前这个节点的依赖来其之前已经完成了。 下面附上一个图让大伙更好的理解&#xff1a; 比如这个图&#xff1a;B需要依赖A才能完成&#xff0c;A需要依赖C和D才能完成&…

拓扑排序算法详讲

经过一天的专研,终于明白了拓扑排序算法,写篇博客记录一下心得. 一.拓扑排序介绍 在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,我们称为AOV网. 设G(V,E)是一个具有n个顶点的有向图,v中的顶点序列v1,v2…,vn,满足若从…

C++ 拓扑排序算法

拓扑排序 有向无环图 如果一个有向图的任意顶点都无法通过一些有向边回到自身&#xff0c;那么称这个有向图为有向无环图。 拓扑排序 拓扑排序是将有向无环图G的所有顶点排成一个线性序列&#xff0c;使得对图G中的任意两个顶点u、v&#xff0c;如果存在边u->v&#xff0c;那…

拓扑排序

拓扑排序 一、拓扑排序的定义&#xff1a; 先引用一段百度百科上对于拓扑排序的定义&#xff1a; 对一个有向无环图 ( Directed Acyclic Graph 简称 DAG ) G 进行拓扑排序&#xff0c;是将 G 中所有顶点排成一个线性序列&#xff0c;使得图中任意一对顶点 u 和 v &#xff0c…

拓扑排序算法

拓扑排序介绍 拓扑排序(Topological Order)是指&#xff0c;将一个有向无环图(Directed Acyclic Graph简称DAG)进行排序进而得到一个有序的线性序列。 这样说&#xff0c;可能理解起来比较抽象。下面通过简单的例子进行说明&#xff01; 例如&#xff0c;一个项目包括A、B、C…

经典算法之拓扑排序

定义&#xff1a; 把AOV网&#xff08;用定点表示活动&#xff0c;用弧表示活动间优先关系的有向图&#xff09;络中各个顶点按照它们互相之间的优先关系排列成一个线性序列的过程叫做拓扑排序。 方法&#xff1a; 在有向图中选一个没有前驱的顶点并且输出从图中删除该顶点和…

拓扑排序(topological sorting)介绍及Python实现

目录 1. 拓扑排序 2. 拓扑排序存在的前提 3. 拓扑排序的唯一性问题 4. 拓扑排序算法原理 4.1 广度优先遍历 4.2 深度优先遍历 5. 代码实现 5.1 Graph类的实现 5.2 广度优先搜索 5.3 深度优先搜索简易版&#xff08;无loop检测&#xff09; 5.4 深度优先搜索完整版 …

【算法】拓扑排序

今天学习拓扑排序。如果一个有向图的任意顶点都无法通过一些有向边回到自身&#xff0c;那么称这个有向图为有向无环图&#xff08;Directed Acyclic Graph&#xff0c;DAG&#xff09;。拓扑排序就是将有向无环图的所有顶点排序&#xff0c;使得图中任意两个点 u、v&#xff0…

拓扑排序及算法实现

一、拓扑排序概念 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序&#xff0c;是将G中所有顶点排成一个线性序列&#xff0c;使得图中任意一对顶点u和v&#xff0c;若边<u,v>∈E(G)&#xff0c;则u在线性序列中出现在v之前。通常&#xff0c;这样的线性…

利用迭代法求平方根——迭代法开平方运算

一、题目 用迭代法求&#xff1a; 的值。要求精度为0.00001&#xff0c;即 二、迭代公式 求平方根的迭代公式为&#xff1a; 当满足 时&#xff0c;这时的即是求得的根。如果 得到是精确值。如果不为0&#xff0c;则是近似值。 三、C代码 先给出开平方运算的函数。再给出主…