首页 > 开发 > Java > 正文

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

2024-07-13 10:11:57
字体:
来源:转载
供稿:网友

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

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

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教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表