用Java语言编写打印菱形

article/2025/10/1 5:23:46

Java典型例题(打印菱形)

题目:利用*号打印出一个菱形图样

分析:下面逐步分析菱形打印的推演过程

推演过程利用单独的方法演示,使用时直接在主方法中调用对应的方法即可。

第一步,打印一行*号

/**
打印出如下图形:*******
*/
public static void print01() {//每次打印一个星星for(int i = 1;i<=7;i++) {System.out.print("*");}System.out.println();
}

第二步,打印出一个矩形

/**
打印出矩形: ****************************
*/	
public static void print02() {System.out.println("循环每次打印一个星星");for(int i = 1;i<=4;i++) {//行数for(int j = 1;j<=7;j++) {//星星个数System.out.print("*");}System.out.println();}	
}

第三步,打印出一个三角型

/** 
打印出如下图形  ****************
规律如下:
行数   *号个数1     12     33     54     7n     2*n-1  
*/
public static void print03() {for(int i = 1;i<=4;i++) {//控制行数for(int j = 1;j<=2*i-1;j++) {//控制星星个数的时候和行有关System.out.print("*");}System.out.println();}
}

第四步,打印出一个正三角型

/**
打印如下图型:****************规律如下:行数  1 2 3 4 n空格  3 2 1 0 总行数-n星星  1 3 5 7 2*n-1  
*/
public static void print04() {for(int i = 1;i<=4;i++) {//控制行数for(int k = 1;k<=4-i;k++) {//空格的个数System.out.print(" ");}for(int j = 1;j<=2*i-1;j++) {//控制星星个数的时候和行有关System.out.print("*");}System.out.println();}
}

第五步,打印出一个菱形

/***   *  *     **    ****   ******  ********  行数  1 2 3 4 n*  空格  3 2 1 0 总行数-n*  星星  1 3 5 7 2*n-1*  *  *  ******   ****    **  行数  3 2 1   n*  空格  1 2 3       总行数-n*  星星  5 3 1   2*n-1*  *  *  *  */
public static void print05() {for(int i = 1;i<=4;i++) {//控制行数for(int k = 1;k<=4-i;k++) {//空格的个数System.out.print(" ");}for(int j = 1;j<=2*i-1;j++) {//控制星星个数的时候和行有关System.out.print("*");}System.out.println();}for(int i = 3;i>=1;i--) {//控制行数for(int k = 1;k<=4-i;k++) {//空格的个数System.out.print(" ");}for(int j = 1;j<=2*i-1;j++) {//控制星星个数的时候和行有关System.out.print("*");}System.out.println();}
}

打印结果如图所示:

在这里插入图片描述

思考:如何打印出一个中间部分是一个空心的菱形

public static void print06() {for(int i = 1;i<=4;i++) {//控制行数for(int k = 1;k<=4-i;k++) {//空格的个数System.out.print(" ");}for(int j = 1;j<=2*i-1;j++) {//控制星星个数的时候和行有关if(j==1||j==2*i-1) {System.out.print("*");}else {System.out.print(" ");}}System.out.println();}for(int i = 3;i>=1;i--) {//控制行数for(int k = 1;k<=4-i;k++) {//空格的个数System.out.print(" ");}for(int j = 1;j<=2*i-1;j++) {//控制星星个数的时候和行有关if(j==1||j==2*i-1) {System.out.print("*");}else {System.out.print(" ");}}System.out.println();}	
}

打印结果如图所示:
在这里插入图片描述

菱形代码优化

以上实现打印菱形的代码比较复杂,我们可以对代码进行优化
在这里插入图片描述

/*
菱形代码优化
*/
public static void print07() {for(int x = -5;x<=5;x++) {for(int y = -5;y<=5;y++) {if((x>0?x:-x)+(y>0?y:-y)<=5) {System.out.print("*");}else {System.out.print(" ");}}System.out.println();}

输出结果如图所示:
在这里插入图片描述


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

相关文章

java打印出一个菱形

题目 用键盘读入一个字符&#xff0c;然后在屏幕上显示一个用这个字符填充的对角线长5个字符&#xff0c;倾斜放置的菱形。 输入描述&#xff1a; 输入一个char类型字符 输出描述&#xff1a; 输出一个用这个字符填充的对角线长5个字符&#xff0c;倾斜放置的菱形 示例1 输入&a…

java;打印菱形

本文讲述如何用Java打印一个菱形&#xff0c;以及打印直角和等腰三角形的方法&#xff0c; 本文教程比较详细&#xff0c;如果想要直接学习菱形可以直接翻到本文最下方&#xff01;&#xff01;&#xff01; 左下角三角形 &#xff08;这里说的方位均是对应矩形来说&#xff09…

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

数据结构第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…