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打印菱形图案的资料请关注脚本之家其它相关文章!
相关文章
详解Spring cloud使用Ribbon进行Restful请求
这篇文章主要介绍了详解Spring cloud使用Ribbon进行Restful请求,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-04-04Java中的List和MySQL中的varchar相互转换的解决方案
实体类中有一个 List<String> 类型的属性,对应于 MySQL 表里的 varchar 字段,使用 MyBatis 添加或查询时能互相转换,本文给大家介绍Java中的List和MySQL中的varchar相互转换的解决方案,需要的朋友可以参考下2024-06-06SpringBoot集成RabbitMQ实现用户注册的示例代码
这篇文章主要介绍了SpringBoot集成RabbitMQ实现用户注册的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-12-12
最新评论