Java黑皮书课后题第5章:*5.18(使用循环语句打印4个图案)使用嵌套的循环语句,编写4个独立的程序打印下面的图案

*5.18(使用循环语句打印4个图案)使用嵌套的循环语句,编写4个独立的程序打印下面的图案

  • 题目
    • 题目概述
    • 破题
  • 代码

题目

题目概述

*5.18(使用循环语句打印4个图案)使用嵌套的循环语句,编写4个独立的程序打印下面的图案
在这里插入图片描述

破题

可参考5.17内容:点击这里直达,或者复制以下URL到浏览器:

https://blog.csdn.net/weixin_46356698/article/details/119847832
打印金字塔这类题目需要使用循环+printf()

  1. 图案1:第一行从1打印到1,第二行从1打印到2,第三行从1打印到3……第n行从1打印到n
  2. 图案2:(假设需要打印lines行)第一行从1打印到lines,第二行从1打印到(lines-1),第三行从1打印到(lines-2)……第n行从1打印到(lines-n+1)
  3. 图案3:(假设2个空格代替1个数字)分为两部分,一部分为空格、一部分为数字;part空格:第1行打印10个空格,第2行打印8个空格……第n行打印2 * (lines - n)个空格;part数字:第1行从1打印到1,第2行从2打印1……第n行从n打印到1
  4. 图案4:part空格:第1行打印0个空格,第2行打印2个空格……第n行打印2 * (n - 1)个空格;part数字:第1行从1打印到lines,第2行从1打印到(lines-1)……第n行从1打印到(lines - n + 1)
  5. 综上:(不计算表头,一共lines行)第n行:
    ①(图案1数字部分)打印数字从1到n;
    ②(图案1空格部分)打印2 * (lines - n)个空格;
    ③(分隔)打印3个空格来分隔不同图案;
    ④(图案2数字部分)从1打印到(lines-n+1);
    ⑤(图案2空格部分)打印2 * (n - 1)个空格;
    ⑥(分隔)打印3个空格来分隔不同图案;
    ⑦(图案3空格部分)打印2 * (lines - n)个空格;
    ⑧(图案3数字部分)从n打印到1;
    ⑨(分隔)打印3个空格来分隔不同图案;
    ⑩(图案4空格部分)打印2 * (n - 1)个空格;
    ⑪(图案4数字部分)从1打印到(lines - n + 1)

代码

public class Test5_18 {public static void main(String[] args) {// 0:打印表头System.out.println("图案1           图案2           图案3           图案4");int lines = 6;for(int n = 1;n <= lines;n++){// ①(图案1数字部分)打印数字从1到n;for(int a = 1;a <= n;a++)System.out.printf("%d ", a);// ②(图案1空格部分)打印2 * (lines - n)个空格;if(lines != n){for(int b = lines - n;b > 0;b--)System.out.print("  ");}// ③(分隔)打印3个空格来分隔不同图案;System.out.print("    ");// ④(图案2数字部分)从1打印到(lines-n+1);for(int c = 1;c < (lines - n + 2); c++){System.out.printf("%d ", c);}// ⑤(图案2空格部分)打印2 * (n - 1)个空格;if(n != 1){for(int d = 1;d <= n - 1;d++)System.out.print("  ");}// ⑥(分隔)打印3个空格来分隔不同图案;System.out.print("    ");// ⑦(图案3空格部分)打印2 * (lines - n)个空格;if(n != 6){for(int e = 1;e < (lines - n + 1);e++)System.out.print("  ");}// ⑧(图案3数字部分)从n打印到1;for(int f = n; f > 0;f--)System.out.printf("%d ",f);// ⑨(分隔)打印3个空格来分隔不同图案;System.out.print("    ");// ⑩(图案4空格部分)打印2 * (n - 1)个空格;if(n != 1){for(int g = 1;g < n;g++)System.out.print("  ");}// ⑪(图案4数字部分)从1打印到(lines - n + 1)for(int h = 1;h < lines - n + 2;h++)System.out.printf("%d ", h);// 换行System.out.println();}}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部