Java编程用指定字符打印菱形实例

发布时间 - 2026-01-11 03:12:55    点击率:

学习Java 本身是一个挺枯燥的过程,说白了就是每天敲代码而已。但如果换一种思路,可以编写各种各样的程序,不仅加深对代码的理解,同时提高兴趣,这样十分有利于大家的学习。下面我们来看一个有趣的小实例。

如何实现用指定字符打印出一个菱形,代码如下。

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(); //递归
		}
	}
	}

输出:

请输入要打印的层数,只能输入大于等于3的奇数 :
15
请输入要打印的形状:
(!2#qwe)
      (!2#qwe)
   (!2#qwe) (!2#qwe)
   (!2#qwe)  (!2#qwe)
  (!2#qwe)   (!2#qwe)
  (!2#qwe)    (!2#qwe)
 (!2#qwe)     (!2#qwe)
 (!2#qwe)      (!2#qwe)
(!2#qwe)       (!2#qwe)
 (!2#qwe)      (!2#qwe)
 (!2#qwe)     (!2#qwe)
  (!2#qwe)    (!2#qwe)
  (!2#qwe)   (!2#qwe)
   (!2#qwe)  (!2#qwe)
   (!2#qwe) (!2#qwe)
      (!2#qwe)

总结

以上就是本文关于用指定字符打印菱形的全部内容,希望对大家的编程学习有所帮助。谢谢大家对本站的支持!


# java  # 字符菱形  # 打印菱形  # java打印出菱形图案实例详解  # Java利用for循环打印菱形的实例教程  # java打印菱形及直角和等腰三角形的方法  # JAVA用for循环打印空心菱形  # 运用java以及循环打印菱形详细实例代码  # 请输入  # 递归  # 层数  # 是一个  # 重新输入  # 谢谢大家  # 说白了  # 如何实现  # 各种各样  # 换一种  # String  # ch  # static  # int  # void  # printBlank  # blank  # gt  # main  # args 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 成都网站制作公司哪家好,四川省职工服务网是做什么用?  网站制作免费,什么网站能看正片电影?  智能起名网站制作软件有哪些,制作logo的软件?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  如何用搬瓦工VPS快速搭建个人网站?  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  新三国志曹操传主线渭水交兵攻略  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  Laravel如何实现文件上传和存储?(本地与S3配置)  高端云建站费用究竟需要多少预算?  java ZXing生成二维码及条码实例分享  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  北京专业网站制作设计师招聘,北京白云观官方网站?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  网站建设整体流程解析,建站其实很容易!  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何在橙子建站上传落地页?操作指南详解  音乐网站服务器如何优化API响应速度?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  如何在IIS7中新建站点?详细步骤解析  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  JavaScript如何实现类型判断_typeof和instanceof有什么区别  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  EditPlus中的正则表达式实战(6)  Laravel如何记录自定义日志?(Log频道配置)  微信小程序 scroll-view组件实现列表页实例代码  ,在苏州找工作,上哪个网站比较好?  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  免费网站制作appp,免费制作app哪个平台好?  大同网页,大同瑞慈医院官网?  Laravel如何配置和使用缓存?(Redis代码示例)  手机软键盘弹出时影响布局的解决方法  中山网站制作网页,中山新生登记系统登记流程?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  如何在云主机上快速搭建网站?  如何快速搭建支持数据库操作的智能建站平台?  MySQL查询结果复制到新表的方法(更新、插入)  LinuxCD持续部署教程_自动发布与回滚机制  如何获取免费开源的自助建站系统源码?  魔方云NAT建站如何实现端口转发?  5种Android数据存储方式汇总  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?