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

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

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

第二部:对数字进行分析

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

示例代码如下:

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打印菱形图案的资料请关注脚本之家其它相关文章!

java打印菱形图案_java打印出菱形图案实例详解相关推荐

  1. java多态讲解例子_Java多态性定义与用法实例详解

    本文实例讲述了Java多态性定义与用法.分享给大家供大家参考,具体如下: 多态性是通过: 1 接口和实现接口并覆盖接口中同一方法的几不同的类体现的 2 父类和继承父类并覆盖父类中同一方法的几个不同子类 ...

  2. java 工厂 单例_java 单例模式和工厂模式实例详解

    单例模式根据实例化对象时机的不同分为两种:一种是饿汉式单例,一种是懒汉式单例. 私有的构造方法 指向自己实例的私有静态引用 以自己实例为返回值的静态的公有的方法 饿汉式单例 public class ...

  3. java显示参数,Java中的隐式参数和显示参数实例详解

    在学习java的过程中,我们会遇到许多的问题.下面我们就来看看什么是隐式参数和显示参数. 显式参数,就是平时见到的在方法名括号中间的参数,就是所谓能看得见的参数www.cppcns.com. 隐式参数 ...

  4. java 静态 编译_Java中的动态和静态编译实例详解

    Java中的动态和静态编译实例详解 首先,我们来说说动态和静态编译的问题. Q: java和javascript有什么区别? 总结了一下:有以下几点吧: 1.首先从运行环境来说java代码是在JVM上 ...

  5. java 接口函数_Java函数式接口Supplier接口实例详解

    这篇文章主要介绍了Java函数式接口Supplier接口实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 JDK提供了大量常用的函数式接口以丰 ...

  6. java supplier接口_Java函数式接口Supplier接口实例详解

    这篇文章主要介绍了Java函数式接口Supplier接口实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 JDK提供了大量常用的函数式接口以丰 ...

  7. java 获取oracle表结构_Java导出oracle表结构实例详解

    Java导出oracle表结构实例详解 发布于 2020-7-20| 复制链接 摘记:  Java导出oracle表结构实例详解最近用到的,因为plsql是收费的,不让用,找了很多方法终于发现了这个. ...

  8. java 分割数据_java 分割csv数据的实例详解

    java 分割csv数据的实例详解 实际需要解析的csv中很多都是从excel中转过来的,数据中本身包含了逗号的数据导致split的过程中发现数据对不上,因此,基于这种特性,重新写了一个csv数据的分 ...

  9. mongodb java查询_java操作mongoDB查询的实例详解

    java操作mongo查询的实例详解 前言: MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库 ...

  10. java的websocket_java 实现websocket的两种方式实例详解

    一.介绍 1.两种方式,一种使用tomcat的websocket实现,一种使用spring的websocket 2.tomcat的方式需要tomcat 7.x,JEE7的支持. 3.spring与we ...

最新文章

  1. TypeError: expected str, bytes or os.PathLike object, not module
  2. windows下安装whl文件
  3. 超简单-用协程简化你的网络请求吧,兼容你的老项目和旧的网络请求方式
  4. Elasticsearch之type底层结构及弃用原因
  5. request for KPI tile number display could not be executed for the second time
  6. 超级计算机预测南方下雪,南方九省即将大雪纷飞?超级计算机:可能性增加,但还没有确定...
  7. 在银行存款被吞了,怎么能快速解决?
  8. Timer组件的使用
  9. Java项目开发全流程实践
  10. 每日一题丨2020.05.27
  11. typhoon-blade c++ lib manager
  12. html三栏布局有哪几种,CSS三栏布局的5种方法详解
  13. Adobe Flash Player v26.0.0.126发布:请尽快更新
  14. 网页无法打开...因为:net:ERR_CLEARTEXT_NOT_PERMITTED错误解决办法
  15. Linux Ubuntu查看IP信息的两种方式Ubuntu中检查你的 IP 地址
  16. cmd无法打开jupyter notebook问题
  17. GDB基本命令(整合)
  18. 用JS输出菱形图案:
  19. 【自动控制原理】根轨迹Root Locus-笔记
  20. 2007新年のあいさつ――あなたの心の声を聞いて私は作者da

热门文章

  1. Google Chrome 浏览器——隐藏功能及快捷键
  2. 2018年前的面试题总结
  3. 程序员复工后被裁,600万房21000房贷无力偿还,给年轻人3点忠告
  4. .NET 经常被面试官问到的问题
  5. 2021-11-15
  6. linux 使用icc运行tcl,ICC的步骤流程方法
  7. 优雅地使用eruda在移动端上调试网页
  8. node.js 模块的安装卸载与导入机制
  9. allegro输出gerber过孔盖孔
  10. aic值检验 p值_模型选择方法:AIC和BIC