java打印出菱形图案实例详解

 更新时间:2020年02月25日 08:41:02   作者:V  
在本篇文章里小编给大家分享的是关于java打印出菱形图案实例详解,需要的朋友们可以学习下。

第一步:首先对图像进行解析

想要打印该图形必须要进行多层循环嵌套,分两个部分进行打印。

第一部分为上半部分前四行,他们是递增的关系,后半部分后三行为递减关系,由此可以得出我们需要写两个打的循环。并且由于“*”位置的关系,我们必须带入空格同时打印。所以每个部分需要两个循环控制,即两个大循环每个里面嵌套两个小循环总计四个循环。

第二部:对数字进行分析

在分析之前,我们必须明白外层循环控制行数,内层循环控制列数,因此我们需要分析他的行和列。

示例代码如下:

class ForForTest {
  public static void main(String[] args) {
     
/*
输出如下图形:  行数i:  空格数j:  “*”数目z:
   *       1     3      1
  ***      2     2      3
  *****      3     1      5
 *******     4     0      7
  *****      1     1      5   6
  ***      2     2      3   5
   *       3     3      1   4
 */
    for (int i = 1;i <= 4;i++){
      for (int j = 1;j <= 4 - i;j++) {
        System.out.print(" ");
      }
      for (int z = 1;z <= i*2-1;z++){
        System.out.print("*");
      }
      System.out.println();
    }
    for (int i = 1;i <= 3;i++){
      for (int j = 1;j <= i;j++){
        System.out.print(" ");
      }
      int y = 3;
      for (int z = 5;z >= 2*i-1;z--){
        System.out.print("*");
      }
      System.out.println();
    }
  }
}

实例补充

import java.util.Scanner;
import java.util.regex.Matcher;
public class test01 {
private static int i;
private String ch;
public static void main(String[] args) {
    runTest();
    }
private void printBlank(int blank){//打空格
    for(int i=blank;i>=1;i--){
        System.out.print(" ");
    }
}
    private void printStar( int sum,String ch){ //打图形
        for(int i=sum;i>=1;i--){
            System.out.print(ch);
        }
    }
    private void printTab(){ //打回车
        System.out.println();
    }
    private void run(int level,String ch){//综合打
        if(ch.length()==1){
            for(i=1;i<=(level+1)/2;i++){
                if(i==1){
                    printBlank((level+1)/2-i);
                    printStar(1,ch);
                    printTab();
                }else{
                    printBlank((level+1)/2-i);
                    printStar(1,ch);
                    printBlank(((level+1)/2+i-1)-((level+1)/2-i)-2); //总元素为 层数+i-1,再减去打印的空格和*号数量.
                    printStar(1,ch);
                    printTab();
                }
            } for(i=(level+1)/2-1;i>=1;i--){
                if(i==1){
                    printBlank((level+1)/2-i);
                    printStar(1,ch);
                    printTab();
                }else{
                    printBlank((level+1)/2-i);
                    printStar(1,ch);
                    printBlank((level+1)/2+i-1-((level+1)/2-i)-2);
                    printStar(1,ch);
                    printTab();
                }
            }
        }else{
            for(i=1;i<=(level+1)/2;i++){
                if(i==1){
                    printBlank((level+1)/2-i+ch.length()/2);
                    printStar(1,ch);
                    printTab();
                }else{
                    printBlank((level+1)/2-i);
                    printStar(1,ch);
                    printBlank(((level+1)/2+i-1)-((level+1)/2-i)-2); //总元素为 层数+i-1,再减去打印的空格和*号数量.
                    printStar(1,ch);
                    printTab();
                }
            } for(i=(level+1)/2-1;i>=1;i--){
                if(i==1){
                    printBlank((level+1)/2-i+ch.length()/2);
                    printStar(1,ch);
                    printTab();
                }else{
                    printBlank((level+1)/2-i);
                    printStar(1,ch);
                    printBlank((level+1)/2+i-1-((level+1)/2-i)-2);
                    printStar(1,ch);
                    printTab();
                }
            }
        }
        }
    public static void runTest() { //判断条件
        Scanner s = new Scanner(System.in);
        try{
            System.out.println("请输入要打印的层数,只能输入大于等于3的奇数 :" );
            int level = s.nextInt();
            String str = String.valueOf(level);
            if(str.matches("[1-9]\\d*")&&Integer.parseInt(str)%2!=0&&Integer.parseInt(str)!=1){
                System.out.println("请输入要打印的形状:" );
                String ch = s.next();
                try{
                    if(ch.matches("[^\u4e00-\u9fa5]+" )){
                        new test01().run(level, ch);
                    }else {
                        throw new Exception();}
                }catch (Exception e) {
                    System.out.println("输入有误!!!不能包含汉字字符,请重新输入");
                    System.out.println("***********************************");
                    runTest(); //递归
                }
            }else if(str.matches("[-9-0]+")){ //
                throw new Exception();
            }
        }catch (Exception e) {
            System.out.println(" 输入有误!!!只能输入大于等于3的奇数,请重新输入");
            System.out.println("***********************************");
            runTest(); //递归
        }
    }
    }

以上就是java打印出菱形图案实例详解的详细内容,更多关于java打印菱形图案的资料请关注脚本之家其它相关文章!

相关文章

  • SpringBoot如何使用p6spy监控数据库

    SpringBoot如何使用p6spy监控数据库

    这篇文章主要介绍了SpringBoot如何使用p6spy监控数据库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 如何解决springboot读取配置文件的中文乱码问题

    如何解决springboot读取配置文件的中文乱码问题

    本篇文章主要介绍了如何解决springboot读取配置文件的中文乱码问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看
    2018-05-05
  • Java判断object对象为空(包括null ,““)的方法

    Java判断object对象为空(包括null ,““)的方法

    这篇文章主要介绍了Java判断对象是否为空(包括null ,“”)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • Spring配置文件的超详细图文介绍

    Spring配置文件的超详细图文介绍

    Spring配置文件是一个或多个标准的XML文档,下面这篇文章主要给大家介绍了关于Spring配置文件的超详细图文介绍,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • 详解MybatisPlus中@Version注解的使用

    详解MybatisPlus中@Version注解的使用

    在MyBatisPlus中,常常使用@Version实现乐观锁,该注解用于字段上面。本文将通过示例详细讲解@Version注解的使用,感兴趣的可以了解一下
    2022-06-06
  • 简单了解Java垃圾回收器的种类

    简单了解Java垃圾回收器的种类

    这篇文章主要介绍了简单了解Java垃圾回收器的种类,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Mybatis 一级缓存与二级缓存的实现

    Mybatis 一级缓存与二级缓存的实现

    mybatis作为一个流行的持久化工具,缓存必然是缺少不了的组件。通过这篇文章,就让我们来了解一下一级缓存与二级缓存的实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • Java中Collections.sort()排序方法举例详解

    Java中Collections.sort()排序方法举例详解

    很多时候都需要对一些数据进行排序的操作,这篇文章主要给大家介绍了关于Java中Collections.sort()方法举例详解的相关资料,使用Collections.sort()可以使用其sort()方法来对List、Set等集合进行排序,需要的朋友可以参考下
    2024-02-02
  • Spring Boot启动过程完全解析(二)

    Spring Boot启动过程完全解析(二)

    这篇文章主要介绍了Spring Boot启动过程完全解析(二),需要的朋友可以参考下
    2017-04-04
  • mybatis plus动态数据源切换及查询过程浅析

    mybatis plus动态数据源切换及查询过程浅析

    这篇文章主要介绍了mybatis plus动态数据源切换及查询过程浅析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论