700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java 使用嵌套 for 循环打印皇冠

Java 使用嵌套 for 循环打印皇冠

时间:2019-04-01 16:29:35

相关推荐

Java 使用嵌套 for 循环打印皇冠

1 //需求:打印王冠 2 /** 3System.out.println("***"); 4System.out.println(" ********* "); 5System.out.println(" ***** ***** ***** "); 6System.out.println(" ***************** "); 7System.out.println(" *************** "); 8System.out.println("*************"); 9 10分析: 11 冠顶: 行数 空格数A *数A空格数B*数A空格数B *数A 空格数A 12 1 0 1 10 1 10 1 0 13 2 1 3 6 3 6 3 1 14 3 2 5 2 5 2 5 2 15lineline-1 2*line-1 4*line-22*line-1 4*line-2 2*line-1 line-1 16 17 冠底: 行数空格数C *数B 空格数C 18 4 3 17 319 5 4 15 4 20 6 5 13 5 21 7 6 11 622 8 7 9 7 23 9 8 7 8 24 10 9 5 9 25 11 10 3 10 26 12 11 1 11 27lineline-12*line-1 line-1 28 */ 29 class ForCrown 30 { 31public static void main(String[] args) 32{ 33 //普通方式打印王冠 34 System.out.println("***"); 35 System.out.println(" ********* "); 36 System.out.println(" ***** ***** ***** "); 37 System.out.println(" ***************** "); 38 System.out.println(" *************** "); 39 System.out.println("*************"); 40 41 System.out.println("----------------------------------------------------------------------------"); 4243 //优化方式打印王冠 44 45 int topLine = 5; //打印行数*2(王冠高度) 46 String space = " "; //空格,可改占位符 47 String star = "■"; //星星,可改占位符 48 String jewel = "◇"; //冠顶宝石,可改占位符 49 50 crown(topLine, space, star, jewel); //调用打印冠顶方法 51} 5253/** 54 打印冠顶方法 55 56 @param topLine 打印行数,topLine * 2 = 王冠高度(topLine取值必须大于 1); 57 @param space 空格,可改占位符 58 @param star 星星,可改占位符 59 @param jewel 冠顶宝石,可改占位符 60*/ 61public static void crown(int topLine, String space, String star, String jewel) 62{ 6364 if(topLine <= 1) 65 { 66 System.out.println("王冠规格必须大于 1"); 67 return; 68 } 69 int spLine = topLine; //记录 空格数B 打印行数 70 int bottomLine = topLine * 2; //王冠总的行数,冠顶和冠底行数保持一致 71 int count = 0; //累计冠顶最后一行,即冠底的上一行的星星之间的占位数。(冠顶最后一行星星之间的占位数减 2 可得冠底第一行的星星总数) 7273 //打印冠顶 74 for(int i = 1; i <= topLine; i++) 75 { 76 //空格数A 77 for(int j = 1; j <= i - 1; j++) 78 { 79 System.out.print(space); 80 } 81 //*数A 82 for(int j = 1; j <= 2 * i - 1; j++) 83 { 84 if(i == 1) 85 { 86 System.out.print(jewel); //第一行打印冠顶宝石 87 } 88 else 89 { 90 System.out.print(star); 91 if(i == topLine) 92 { 93count++; 94 } 95 } 96 } 97 //空格数B 98 for(int j = 4 * spLine - 2; j >= 1; j--) 99 {100 System.out.print(space);101 if(i == topLine)102 {103 count++;104 }105 }106 //*数A107 for(int j = 1; j <= 2 * i - 1; j++)108 {109 if(i == 1)110 {111 System.out.print(jewel); //第一行打印冠顶宝石112 }113 else114 {115 System.out.print(star);116 if(i == topLine)117 {118count++;119 }120 }121 }122 //空格数B123 for(int j = 4 * spLine - 2; j >= 1; j--)124 {125 System.out.print(space);126 if(i == topLine)127 {128 count++;129 }130 }131 spLine--; //输出空格后,spLine自减,以减少 空格数B 下一次循环输出的空格132 //*数A133 for(int j = 1; j <= 2 * i - 1; j++)134 {135 if(i == 1)136 {137 System.out.print(jewel); //第一行打印冠顶宝石138 }139 else140 {141 System.out.print(star);142 if(i == topLine)143 {144count++;145 }146 }147 }148 //空格数A149 for(int j = 1; j <= i - 1; j++)150 {151 System.out.print(space);152 }153 System.out.println(); //换行154 }155 count -= 2; //累计的是冠顶最后一行的值,冠底第一行使用时,须自减2156 157 //打印冠底158 for(int i = topLine + 1; i <= bottomLine; i++)159 {160 //空格数C161 for(int j = 1; j <= i - 1; j++)162 {163 System.out.print(space);164 }165 //*数B166 for(int j = count ; j >= 1; j--)167 {168 System.out.print(star);169 }170 count -= 2; //每打印一行减2171 //空格数C172 for(int j = 1; j <= i - 1; j++)173 {174 System.out.print(space);175 }176 System.out.println(); //换行177 }178}179 }180 /*181总结:根据普通方式的输出,把王冠拆分冠顶和冠底两部分进行分析,找出空格和组成冠体星星之间的规律。182 */

打印结果如下图:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。