教你如何使用Java输出各种形状
作者:CodingDGSun 发布时间:2023-08-21 00:46:55
1、输出矩形
以此矩形案例(4行,9列的矩形)为例
public static void main(String[] args) {
//输出矩形
for (int i = 1; i <= 4; i++) {//控制行,即4行
for (int j = 1; j <= 9; j++) {//控制输出的*的个数,每行9个
System.out.print("*");
}
//换行
System.out.println();
}
}
输出结果:
*********
*********
*********
*********
2、前面有空格的矩形
以此矩形案例(4行,9列的矩形)为例
public static void main(String[] args) {
//输出前面有空格矩形
for (int i = 1; i <= 4; i++) {//控制行,即4行
//输出空格
for (int k = 1; k <= 5; k++) {//控制空格,即每行开始输出5个空格
System.out.print(" ");
}
for (int j = 1; j <= 9; j++) {//控制输出的*的个数,每行9个
System.out.print("*");
}
//换行
System.out.println();
}
}
输出结果:
*********
*********
*********
*********
3、输出平行四边形
以此矩形案例(4行,9列的矩形)为例,要变成平行四边形
第一行前面输出8个空格
第二行前面输出7个空格
第三行前面输出6个空格
第四行前面输出5个空格
********* 1 8
********* 2 7
********* 3 6
********* 4 5
综上所述,得出规律:行数+空格数=9
public static void main(String[] args) {
//输出平行四边形
for (int i = 1; i <= 4; i++) {//控制行,即4行
//输出空格
for (int k = 1; k <= 9 - i; k++) {//控制空格,行数+空格数=9,即每行开始输出9-i个空格
System.out.print(" ");
}
for (int j = 1; j <= 5; j++) {//控制输出的*的个数,每行5个
System.out.print("*");
}
//换行
System.out.println();
}
}
输出结果:
*****
*****
*****
*****
4、输出三角形
以此案例(4行)为例,要变成三角形
第一行前面输出8个空格,1个星
第二行前面输出7个空格,3个星
第三行前面输出6个空格,5个星
第四行前面输出5个空格,7个星
* 1 8 1
*** 2 7 3
***** 3 6 5
******* 4 5 7
综上所述,得出规律:行数+空格数=9,2x行数-1=星的个数
public static void main(String[] args) {
//输出三角形
for (int i = 1; i <= 4; i++) {//控制行,即4行
//输出空格
for (int k = 1; k <= 9 - i; k++) {//控制空格,行数+空格数=9,即每行开始输出9-i个空格
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {//控制输出的*的个数,2x行数-1=星的个数,即每行2 * i -1个星
System.out.print("*");
}
//换行
System.out.println();
}
}
输出结果:
*
***
*****
*******
5、输出菱形
此案例由上面三角形(4行)和下面倒三角形(3行)组合,变成菱形
上面三角形
第一行前面输出8个空格,1个星
第二行前面输出7个空格,3个星
第三行前面输出6个空格,5个星
第四行前面输出5个空格,7个星
下面倒三角形
第一行前面输出6个空格,5个星
第二行前面输出7个空格,3个星
第三行前面输出8个空格,1个星
* 1 8 1
*** 2 7 3
***** 3 6 5
******* 4 5 7
***** 1 6 5
*** 2 7 3
* 3 8 1
综上所述,得出规律:上面三角形,行数+空格数=9,2x行数-1=星的个数;下面倒三角形,行数+5=空格数,7-2x行数=星的个数
public static void main(String[] args) {
//输出上面三角形
for (int i = 1; i <= 4; i++) {//控制行,即4行
//输出空格
for (int k = 1; k <= 9 - i; k++) {//控制空格,行数+空格数=9,即每行开始输出9-i个空格
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {//控制输出的*的个数,2x行数-1=星的个数,即每行2 * i -1个星
System.out.print("*");
}
//换行
System.out.println();
}
//输出下面倒三角形
for (int i = 1; i <= 3; i++) {//控制行,即3行
//输出空格
for (int k = 1; k <= i + 5; k++) {//控制空格,行数+5=空格数,即每行开始输出i+5个空格
System.out.print(" ");
}
for (int j = 1; j <= 7 - 2 * i; j++) {//控制输出的*的个数,7-2x行数=星的个数,即每行7 - 2 * i个星
System.out.print("*");
}
//换行
System.out.println();
}
}
输出结果:
*
***
*****
*******
*****
***
*
5、输出空心菱形
此案例由上面三角形(4行)和下面倒三角形(3行)组合,变成菱形,中间星形由空格代替
*
* *
* *
* *
* *
* *
*
得出规律:在输出星的地方,每行第一个和最后一个输出星,其余输出空格
public static void main(String[] args) {
//输出上面三角形
for (int i = 1; i <= 4; i++) {//控制行,即4行
//输出空格
for (int k = 1; k <= 9 - i; k++) {//控制空格,行数+空格数=9,即每行开始输出9-i个空格
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {//控制输出的*的个数,2x行数-1=星的个数,即每行2 * i -1个星
//在首和尾输出星,其余输出空格
if (j == 1 || j == 2 * i - 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
//换行
System.out.println();
}
//输出下面倒三角形
for (int i = 1; i <= 3; i++) {//控制行,即3行
//输出空格
for (int k = 1; k <= i + 5; k++) {//控制空格,行数+5=空格数,即每行开始输出i+5个空格
System.out.print(" ");
}
for (int j = 1; j <= 7 - 2 * i; j++) {//控制输出的*的个数,7-2x行数=星的个数,即每行7 - 2 * i个星
//在首和尾输出星,其余输出空格
if (j == 1 || j == 7 - 2 * i) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
//换行
System.out.println();
}
}
输出结果:
*
* *
* *
* *
* *
* *
*
6、输出正方形
以此案例(5行,5列的正方形)为例
public static void main(String[] args) {
//输出正方形
int len = 5;//正方形边长
for (int i = 1; i <= len; i++) {//控制行,即4行
for (int j = 1; j <= len; j++) {//输出星,即每行输出j个星
System.out.print("*");
}
//换行
System.out.println();
}
}
输出结果:
*****
*****
*****
*****
*****
7、输出实心菱形
以此案例(5行,5列)为例
第一行第一个和最后一个星的位置是3和3
第二行第一个和最后一个星的位置是2和4
第三行第一个和最后一个星的位置是1和5
第四行第一个和最后一个星的位置是2和4
第五行第一个和最后一个星的位置是3和3
* 1 3 3
*** 2 2 4
***** 3 1 5
*** 4 2 4
* 5 3 3
public static void main(String[] args) {
//输出实心菱形
int len = 5;//边长
int first = len / 2 + 1;//开始输出星的位置
int end = len / 2 + 1;//结束输出星的位置
boolean flag = true;//如果是上半部三角形则是true,如果是下半倒三角形则是false
for (int i = 1; i <= len; i++) {//控制行,即4行
for (int j = 1; j <= len; j++) {//输出星,即每行输出j个星
if (j >= first && j <= end) {//在每行的起始至结束位置输出星
System.out.print("*");
} else {
System.out.print(" ");
}
}
//换行
System.out.println();
if(end == len){//最后一个星位置是边长宽度
flag = false;//下一行,马上执行下半部倒三角形
}
if(flag){
//在上半三角形,开始输出星的位置first前移1,结束输出星的位置end后移1
first--;
end++;
}else {
//在下半倒三角形,开始输出星的位置first后移1,结束输出星的位置end前移1
first++;
end--;
}
}
}
输出结果:
*
***
*****
***
*
如果想输出空心菱形则只需要将:
if (j >= first && j <= end)
改成:
if (j == first || j == end)
来源:https://juejin.cn/post/6983617938372689951


猜你喜欢
- 本文实例讲述了Android开发实现判断通知栏是否打开及前往设置页面的方法。分享给大家供大家参考,具体如下:项目中用到日程提醒功能,如果应用
- 前言:Java 中 hashCode() 和 equals() 的关系是面试中的常考点,如果没有深入思考过两者设计的初衷,这个问题将很难回答
- Stripe支付首页需要引用Stripe.net框架,我引用的是22.8.0版本,注意.NETFramework的版本为4.5,同时需要引用
- 最近几年玩得最疯狂的应该是发红包了,尤其是过年的时候特别受欢迎,下面写了红包的随机算法,其实挺简单的,仅是提供一种思路,希望可以给大家一些启
- 相信你也遇到过这种场景,判断二级目录属于哪个一级目录,一个员工属于哪个上级员工领导…当Mybatis遇上目录树,有哪些解决方法?一般来说,有
- Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的
- SharedPreferences介绍:SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置
- 简单说一下(定义)什么是原型模式:原型模式是用于创建重复的对象,同时又能保证性能。用一个已经创建的实例作为原型,通过复制该原型对象来创建一个
- 在使用JDBC的时候,数据库据连接是非常宝贵的资源。为了复用这些资源,可以将连接保存在一个队列中。当需要的时候可以从队列中取出未使用的连接。
- 原生系统Android8.1上,WiFi上出现感叹号,此时WiFi可正常访问。原因这是Android 5.0引入的网络评估机制:就是当你连上
- 项目数据库中出现许多值为中括号[]的数据,测试报了bug,经过排查是因为使用了json-lib 的jar包导致。json-lib在将xml字
- 前言大家好,我是小郭,前面我们学习了利用Semaphore来防止多线程同时操作一个资源,通常我们都会利用并行来优化性能,但是对于串行化的业务
- 创建SpringBoot项目在引入Druid之后,根据视频中的教程在application.yaml文件中添加了一些配置(下面的代码是不合乎
- 1. 基本用法<dependency> <groupId>org.redisson</groupI
- package com.yao;import java.util.concurrent.ExecutorService;import jav
- java的比较器有两类,分别是Comparable接口和Comparator接口。在为对象数组进行排序时,比较器的作用非常明显,首先来讲解C
- 概念异常处理的概念起源于早期的编程语言,如 LISP、PL/I 和 CLU。这些编程语言首次引入了异常处理机制,以便在程序执行过程中检测和处
- 定义在类里面的类就叫做内部类。内部类的特点:在内部类中可以直接访问外部类的成员,包括私有的成员在外部类中不能直接访问内部类的成员,必须通过创
- 前言在很多时候,我们代码中会有很多分支,而且分支下面的代码又有一些复杂的逻辑,相信很多人都喜欢用 if-else/switch-case 去
- 一、项目简述功能: 区分为管理员用户和普通用户,普通用户:用户登录,个 人信息修改,图书查询,用户借阅,用户归还,管理员用 户:图书馆里,归