学习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(); //递归}}}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- Java Exchanger 与其他同步器相比有哪些优势和不足?(java exchanger和其他同步器比如何)
- 如何选择和加载 JDBC 驱动程序?(详细教程)(JDBC驱动程序的选择与加载方法)
- Java 中动态生成实体类的方法究竟有哪些?(java动态生成实体类的方法是什么)
- Java 中 label 标签究竟有何作用?(java中label标签的作用是什么)
- Java框架使用指南大汇总,新手必备!(Java框架使用指南汇总)
- 如何解决 0x800a138f - JavaScript 运行时错误?(0x800a138f - JavaScript运行时错误)
- 如何在 Java 中实现实时读取文件内容?(java怎么实时读取文件内容)
- 如何在 Java 中巧妙运用 EasyOCR 实现图像识别?(如何在Java中使用EasyOCR进行图像识别)
- 在 Java 中,HashMap 的 key 是否可以为 null?(Java中HashMap的key可以是null吗 )
- 如何评估Ruby代码的安全性:深入理解代码安全的最佳实践
猜你喜欢
AI推送时光机Java编程用指定字符打印菱形实例
后端开发2023-05-31
Java利用for循环打印菱形的实例教程
后端开发2024-04-02
咦!没有更多了?去看看其它编程学习网 内容吧