Java利用for循环打印菱形的实例教程

Java for循环打印菱形

Java代码输出菱形的方法和思路有很多,在此分享一个稍带模块化拆分思想的解决方案,将需要输出的菱形拆分成8个模块(如下图),每个模块独立实现输出。

优点:8个模块之间耦合性降低,灵活性增强。也就是说我们可以独立的控制这8个模块中任意一个模块的输出内容来灵活应对业务逻辑的变更。

按照上图标好的顺序依次实现这8个模块的代码,当1458模块输出为空格时,其中2367模块的组合,就是一个菱形。

思路分析:

1      ######*######  第一排 模块1[6个"#"]+模块2[1个"*"]+模块3[0个"*"]+模块4[6个"#"]
        2      #####***#####
        3      ####*****####
        4      ###*******###
        5      ##*********##
        6      #***********#
    --------------------------------------------------------
        7      ##*********##  第七排 模块5[2个"#"]+模块6[5个"*"]+模块7[4个"*"]+模块8[2个"#"]
        8      ###*******###
        9      ####*****####
       10      #####***#####
       11      ######*######

代码示例:

public class Demo {

 public static void main(String[] args) {

 //为了输出效果在输出时将思路分析中的"#"替换为" "空格输出

 for (int i = 1; i <= 11; i++) {

 if (i <= 6) {
 //当i <=6时打印上三角形
 //模块 1
 for (int j = 6; j >= i; j--) {
  System.out.print(" ");
 }
 //模块 2
 for (int j = 0; j < i; j++) {
  System.out.print("*");
 }
 //模块 3[同一排中模块3的"*"个数总比模块2少1个,所以这里j <i-1作为循环条件即可]
 for (int j = 0; j < i - 1; j++) {
  System.out.print("*");
 }
 //模块 4
 for (int j = 6; j >= i; j--) {
  System.out.print(" ");
 }
 //换行
 System.out.println();
 } else {
 //当i >6时打印下三角形
 //模块 5
 for (int j = 7; j <= i + 1; j++) {
  System.out.print(" ");
 }
 //模块 6
 for (int j = 11; j >= i; j--) {
  System.out.print("*");
 }
 //模块 7
 for (int j = 11; j >= i + 1; j--) {
  System.out.print("*");
 }
 //模块 8
 for (int j = 7; j <= i + 1; j++) {
  System.out.print(" ");
 }

 //换行
 System.out.println();
 }
 }
 }
}

运行结果:

F:\software\Java\jdk1.8.0_121\bin\java.exe "-javaagent:D:\IntelliJ IDEA 2019.1.4\lib\idea_rt.jar=50753:D:\IntelliJ IDEA 2019.1.4\bin" -Dfile.encoding=UTF-8 -classpath F:\software\Java\jdk1.8.0_121\jre\lib\charsets.jar;F:\software\Java\jdk1.8.0_121\jre\lib\deploy.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\access-bridge-64.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\cldrdata.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\dnsns.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\jaccess.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\jfxrt.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\localedata.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\nashorn.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\sunec.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\sunjce_provider.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\sunmscapi.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\sunpkcs11.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\zipfs.jar;F:\software\Java\jdk1.8.0_121\jre\lib\javaws.jar;F:\software\Java\jdk1.8.0_121\jre\lib\jce.jar;F:\software\Java\jdk1.8.0_121\jre\lib\jfr.jar;F:\software\Java\jdk1.8.0_121\jre\lib\jfxswt.jar;F:\software\Java\jdk1.8.0_121\jre\lib\jsse.jar;F:\software\Java\jdk1.8.0_121\jre\lib\management-agent.jar;F:\software\Java\jdk1.8.0_121\jre\lib\plugin.jar;F:\software\Java\jdk1.8.0_121\jre\lib\resources.jar;F:\software\Java\jdk1.8.0_121\jre\lib\rt.jar;D:\ideastudyspace\spring_study\spring-study\spring-study-aop\target\classes;E:\software\MavenRepository\org\aspectj\aspectjweaver\1.9.4\aspectjweaver-1.9.4.jar;E:\software\MavenRepository\org\springframework\spring-webmvc\5.2.0.RELEASE\spring-webmvc-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-aop\5.2.0.RELEASE\spring-aop-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-beans\5.2.0.RELEASE\spring-beans-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-context\5.2.0.RELEASE\spring-context-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-core\5.2.0.RELEASE\spring-core-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-jcl\5.2.0.RELEASE\spring-jcl-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-expression\5.2.0.RELEASE\spring-expression-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-web\5.2.0.RELEASE\spring-web-5.2.0.RELEASE.jar;E:\software\MavenRepository\com\alibaba\fastjson\1.2.47\fastjson-1.2.47.jar com.shiguang.test.Demo
      *     
     ***    
    *****   
   *******  
  ********* 
 ***********
  ********* 
   *******  
    *****   
     ***    
      *

Process finished with exit code 0

业务变更: 打印一个空心菱形

此时只需要将1458模块输出为"*",2367模块输出为空格即可得到一个空心菱形。

代码示例:

public class Demo2 {

 public static void main(String[] args) {

 for (int i = 1; i <= 11; i++) {

  if (i <= 6) {
  //当i <=6时打印上三角形
  //模块 1
  for (int j = 6; j >= i; j--) {
   System.out.print("*");
  }
  //模块 2
  for (int j = 0; j < i; j++) {
   System.out.print(" ");
  }
  //模块 3[同一排中模块3的"*"个数总比模块2少1个,所以这里j <i-1作为循环条件即可]
  for (int j = 0; j < i - 1; j++) {
   System.out.print(" ");
  }
  //模块 4
  for (int j = 6; j >= i; j--) {
   System.out.print("*");
  }
  //换行
  System.out.println();
  } else {
  //当i >6时打印下三角形
  //模块 5
  for (int j = 7; j <= i + 1; j++) {
   System.out.print("*");
  }
  //模块 6
  for (int j = 11; j >= i; j--) {
   System.out.print(" ");
  }
  //模块 7
  for (int j = 11; j >= i + 1; j--) {
   System.out.print(" ");
  }
  //模块 8
  for (int j = 7; j <= i + 1; j++) {
   System.out.print("*");
  }

  //换行
  System.out.println();
  }
 }
 }
}

运行结果:

F:\software\Java\jdk1.8.0_121\bin\java.exe "-javaagent:D:\IntelliJ IDEA 2019.1.4\lib\idea_rt.jar=50681:D:\IntelliJ IDEA 2019.1.4\bin" -Dfile.encoding=UTF-8 -classpath F:\software\Java\jdk1.8.0_121\jre\lib\charsets.jar;F:\software\Java\jdk1.8.0_121\jre\lib\deploy.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\access-bridge-64.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\cldrdata.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\dnsns.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\jaccess.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\jfxrt.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\localedata.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\nashorn.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\sunec.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\sunjce_provider.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\sunmscapi.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\sunpkcs11.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\zipfs.jar;F:\software\Java\jdk1.8.0_121\jre\lib\javaws.jar;F:\software\Java\jdk1.8.0_121\jre\lib\jce.jar;F:\software\Java\jdk1.8.0_121\jre\lib\jfr.jar;F:\software\Java\jdk1.8.0_121\jre\lib\jfxswt.jar;F:\software\Java\jdk1.8.0_121\jre\lib\jsse.jar;F:\software\Java\jdk1.8.0_121\jre\lib\management-agent.jar;F:\software\Java\jdk1.8.0_121\jre\lib\plugin.jar;F:\software\Java\jdk1.8.0_121\jre\lib\resources.jar;F:\software\Java\jdk1.8.0_121\jre\lib\rt.jar;D:\ideastudyspace\spring_study\spring-study\spring-study-aop\target\classes;E:\software\MavenRepository\org\aspectj\aspectjweaver\1.9.4\aspectjweaver-1.9.4.jar;E:\software\MavenRepository\org\springframework\spring-webmvc\5.2.0.RELEASE\spring-webmvc-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-aop\5.2.0.RELEASE\spring-aop-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-beans\5.2.0.RELEASE\spring-beans-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-context\5.2.0.RELEASE\spring-context-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-core\5.2.0.RELEASE\spring-core-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-jcl\5.2.0.RELEASE\spring-jcl-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-expression\5.2.0.RELEASE\spring-expression-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-web\5.2.0.RELEASE\spring-web-5.2.0.RELEASE.jar;E:\software\MavenRepository\com\alibaba\fastjson\1.2.47\fastjson-1.2.47.jar com.shiguang.test.Demo
****** ******
*****   *****
****     ****
***       ***
**         **
*           *
**         **
***       ***
****     ****
*****   *****
****** ******

Process finished with exit code 0

总结

到此这篇关于Java利用for循环打印菱形的文章就介绍到这了,更多相关Java for循环打印菱形内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java利用for循环输出空心菱形的实例代码

    程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列. 编写程序,在控制台上输出空心菱形,对角距离为6. public class Diamond { public static void main(String[] args) { printHollowRhombus(6); } public static void printHollowRhombus(int size) { if (size % 2 == 0) { size+

  • Java利用for循环输出空心三角形、空心菱形和空心矩形的代码

    空心三角形 空心三角形输出需要用到判断语句,判断每行的空格与星号的输出,下面写出了完整语句,及相关语句的详细注释.空心菱形同样类似 package com.zhebie.test; public class KongTraingle { public static void main(String[] args) { int n=5; //n表示输出空心三角形行数,这里以5行为例 for(int i=1;i<=n;i++) { for(int j=1;j<=n-i;j++) { //控制每行最

  • Java利用for循环打印菱形的实例教程

    Java for循环打印菱形 Java代码输出菱形的方法和思路有很多,在此分享一个稍带模块化拆分思想的解决方案,将需要输出的菱形拆分成8个模块(如下图),每个模块独立实现输出. 优点:8个模块之间耦合性降低,灵活性增强.也就是说我们可以独立的控制这8个模块中任意一个模块的输出内容来灵活应对业务逻辑的变更. 按照上图标好的顺序依次实现这8个模块的代码,当1458模块输出为空格时,其中2367模块的组合,就是一个菱形. 思路分析: 1      ######*######  第一排 模块1[6个"#

  • JAVA用for循环打印空心菱形

    空心菱形如图所示 那么我们应该如何去写出来呢?这就不得不引出一个非常经典的案例,金字塔案例,菱形像不像是两个对称的金字塔呢?废话不多说了,上思路:(仅代表个人理解,欢迎指点) 1.首先我们要写出一个空心菱形,那么我们首先得把需求由繁化简,把他拆分成一个一个简单的需求, 1.1那我们就先写半个金字塔, 是不是很眼熟的结构,没错和九九乘法表类似的结构,上代码 for(int i = 1;i <= 5;i++){ //i代表层数,这个可以设置一个变量接收,随便几层都行,不一定非要是5 for(int

  • java利用Calendar类打印日历

    本文实例为大家分享了java利用Calendar类打印日历的具体代码,供大家参考,具体内容如下 import java.util.Calendar; import java.util.Date; import java.util.Scanner; public class Test { public static void main(String[] args) { System.out.println("请输入日期(如2018-12-07):"); Scanner sc=new Sc

  • JAVA利用HttpClient进行POST请求(HTTPS)实例

    最近,需要对客户的接口做一个包装,然后供自己公司别的系统调用,客户接口是用HTTP URL实现的,我想用HttpClient包进行请求,同时由于请求的URL是HTTPS的,为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程. 1.写一个SSLClient类,继承至HttpClient package com.pcmall.service.sale.miaomore.impl; import java.security.cert.CertificateExcept

  • Python利用for循环打印星号三角形的案例

    简单的for循环打印三角形 1,for循环方法实现星星三角 代码: for i in range(0,5): for j in range(i+1): if i == 4: print("* ",end="") continue if j == 0 or j == i: print("* ",end="") else: print(" ",end="") print() 2.实心三角:

  • java利用正则表达式处理特殊字符的方法实例

    前言 一串字符串中有特殊符号,可能会影响到相关接口业务,所以需要把字符串中的特殊字符都过滤掉 百度上面搜索大部分处理方法是通过正则表达式, 他需要处理的特殊符号都写进正则表达式中去校验, 这种方式一眼看过去就非常别扭, 感觉不灵活, 万一需要过滤其他的又得临时加进去 解决方案 如下所示 public static String stringFilter (String str){ String regEx="[\\u00A0\\s\"`~!@#$%^&*()+=|{}':;',

  • java利用Socket实现聊天室功能实例

    最近研究了下Java socket通信基础,利用代码实现了一个简单的多人聊天室功能,现把代码共享下,希望能帮到有兴趣了解的人. 目录结构: ChatClient: package com.panda.chat; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; @SuppressWarnings("serial") public class ChatClient extend

  • Kafka利用Java实现数据的生产和消费实例教程

    前言 在上一篇中讲述如何搭建kafka集群,本篇则讲述如何简单的使用 kafka .不过在使用kafka的时候,还是应该简单的了解下kafka. Kafka的介绍 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. Kafka 有如下特性: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能. 高吞吐率.即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输. 支持Kafka Serv

随机推荐