教你如何使用Java输出各种形状

目录
  • 1、输出矩形
  • 3、输出平行四边形
  • 4、输出三角形
  • 5、输出菱形
  • 5、输出空心菱形
  • 6、输出正方形
  • 7、输出实心菱形

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)

到此这篇关于教你如何使用Java输出各种形状的文章就介绍到这了,更多相关Java输出形状内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java 基于Spire.Cloud.SDK for Java在PDF中绘制形状

    Spire.Cloud.SDK for Java提供了pdfPathApi接口可用于在PDF文档中绘制形状(或图形),如绘制线条形状drawLine().绘制矩形形状drawRectanglef(),下面将介绍如何通过Java示例和步骤来实现: 一.导入jar文件.(有2种方式) 创建Maven项目程序,通过maven仓库下载导入.以IDEA为例,新建Maven项目,在pom.xml文件中配置maven仓库路径,并指定spire.cloud.sdk的依赖,如下: <repositories>

  • Java 在PDF中绘制形状的两种方法

    在我们编辑PDF文档的过程中,有时候需要在文档中添加一些如多边形.矩形.椭圆形之类的图形,而Free Spire PDF for Java 则正好可以帮助我们在Java程序中通过代码在PDF文档中绘制形状,以及设置形状边线颜色和填充色. Jar包导入 方法一:下载Free Spire.PDF for Java包并解压缩,然后将lib文件夹下的Spire.Pdf.jar包作为依赖项导入到Java应用程序中 方法二:直接通过Maven仓库安装JAR包,配置pom.xml文件的代码如下: <repos

  • Python 协程与 JavaScript 协程的对比

    目录 1.前言 2.什么是协程? 3.混乱的历史 3.1 Python 协程的进化 4.JavaScript 协程的进化 5.Python 协程成熟体 5.1 协程(coroutine) 5.2 任务(Task 对象) 5.3 未来对象(Future) 5.4几种事件循环(event loop) 6.JavaScript 协程成熟体 6.1Promise 继续使用 6.2 async.await语法糖 6.3 js 异步执行的运行机制 6.4 event loop 将任务划分 7.总结与对比 1

  • 一篇文章教你用Java使用JVM工具检测问题

    目录 1.jps 2.jstat 3.jinfo 4.jstack a.死循环案例 b.等待输入 c.死锁 5.jconsole 6.jvisualvm 总结 1.jps 显示运行程序的进程.编码.主类目录信息 public class Demo01 { /** * jps : 显示进程ID,主类名称 * jps -v: 显示进程ID,主类名称以及详细编码信息 * jps -l:显示进程ID,主类目录 * * @param args * @throws IOException */ public

  • 教你如何使用Java输出各种形状

    目录 1.输出矩形 3.输出平行四边形 4.输出三角形 5.输出菱形 5.输出空心菱形 6.输出正方形 7.输出实心菱形 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("*&qu

  • 教你如何用Java替换Word中带有${}的内容

    一.概述 1.因为有些需求,需要把word文档里面的特定数据,设置成可变的:所以需要某种方式,把可变量用标签(如${变量名})替换,通过后端赋值此变量名,重新生成的Word就能根据后端设置的内容变化. 2.替换方法:准备一份word模板文档,如:word_mode.doc(或 word_mode.docx) 文件,把可变内容,用标签${变量名}替换(如图1姓名:${name}) 3.转成可读模板:全部设置完变量标签后,对此word文档进行另存为xml格式的文档(图2),保存后的文件名:word_

  • 教你怎么实现java语言的在线编译

    一.前言 使用过leetcode或者类似在线编译网站功能的人,或许会比较感兴趣,关于在线编译的实现原理,由于我比较头铁,所以一冲动之下毕业设计的项目选择制作一个类似于在线编译的一个网站. 在决定做这个之前,大概对这方面的东西一窍不通,网上的资料很多也是比较千篇一律,给我这种萌新带来的难度不是一点半点,当然,最终收获还是挺大的,所以想写一点东西,作为梳理,也给以后想学的人做一个参考作用(其实在写的过程中还是踩了一些坑的). 最终,其实成果挺水的,做出来的成品,就只是实现了一个简陋的Java语言的在

  • 教你怎么用Java实现给图片打上水印

    一.原图片 二.打水印(文字) import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; public class ImageUtils { // 水印字体 private static final Font FONT = new Font("微软雅黑", Font.

  • 教你怎么用java一键自动生成数据库文档

    这是该工具的github地址:https://github.com/pingfangushi/screw 一.引入pom.xml依赖 <dependencies> <!-- screw 库,简洁好用的数据库表结构文档生成器 --> <dependency> <groupId>cn.smallbun.screw</groupId> <artifactId>screw-core</artifactId> <version

  • 教你怎么用Java通过关键字修改pdf

    一.前言 在main方法中测试该方法,还需要引用的jar包有itextpdf-5.5.10.jar.itext-asian-5.2.0.jar 注意:两jar包之间有版本对应,否则会出现报错,该报错主要针对设置中文字体的方法 java itext 报错 com.itextpdf.text.DocumentException: Font 'STSong-Light' with 'UniGB-UCS2-H' import com.itextpdf.text.Chunk; import com.ite

  • 教你怎么用Java操作Redis

    首先让我们创建一个普通的Maven工程,添加相应的依赖 <dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>com.alib

  • 教你怎么用Java回溯算法解数独

    一.题干 输入一个9*9二维数组表示数独,已经填入的数字用1-9表示,待填入的数字用0表示,试写一个算法解出数独并输出. 二.思路 容易想到回溯法,即以人的思维的解数独,遍历数组,如果是空白就从1-9依次选一个数判断本行.列.3*3宫格内是否有重复,如果有就进行下一个数字的选择:如果该数暂时满足条件,那么进行下一个格子的选择,递归的终止条件是遍历完所有格子. 三.代码分段演示 输入数组 Scanner sc = new Scanner(System.in); int[][] board = ne

  • 教你如何用Java简单爬取WebMagic

    一.Java爬虫--WebMagic 1.1 WebMagic总体架构图 1.2 WebMagic核心组件 1.2.1 Downloader 该组件负责从互联网上下载页面.WebMagic默认使用Apache HttpClient作为下载工具. 1.2.2 PageProcessor 该组件负责解析页面,根据我们的业务进行抽取信息.WebMagic使用Jsoup作为HTML解析工具,并基于其开发了解析Xpath的工具Xsoup. 1.2.3 Scheduler 该组件负责管理待抓取的URL,以及

  • Java输出链表倒数第k个节点

    问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } 思路1: 先遍历链表,计算其长度length; 然后计算出倒数第k个结点就是正数第length - k + 1. 最后再遍历链表,找到所求结点 时间复杂度O(2n),需要遍历两次链表 代码如下: public List

随机推荐