在之前的文章《有趣的图形打印1》中,提到了两种题目:打印三角形、将图形变为空心图形,只保留边界。这篇文章来写一些之前问题的扩展。
第四道题:打印等腰三角形,具体图形如下所示:
*
***
*****
*******
*********
(控制台输出的图形包含较多的空格,可能与字符长度不同,所以没法对其。。大家见谅,可以运行一下代码,看一下具体的实现效果)
图形分析:对于这个等腰三角形有5行,每行的空格数与字符数都有规律可循:
第一行 空格数:5-1=4;字符数:2*(行号=1)-1=1 第二行 空格数:5-2=3;字符数:2*(行号=2)-1=3 第三行 ...............................
这样,就分析完了这个图形的具体实现,下面来看代码:
class Solution{ /** * 打印实心三角形 * * @param c * :打印三角形时使用的字符 * @param lineNum * :三角形的行数 */ public static void test(char c, int lineNum) { // 每行打印的空格数是lineNum-行号(行号从1开始),每行打印2*行号-1个字符 for (int i = 1; i <= lineNum; i++) { int temp = lineNum - i;// 定义一个临时变量来表示行号 while (temp > 0) { System.out.print(" "); temp--; } int j = 2 * i - 1; while (j > 0) { System.out.print(c ); j--; } System.out.println(); } } }
第五道题:打印空心三角形,具体思路与上篇文章的“第三道题”相同,就不在这重写了,请看具体代码:
class Solution{ /** * 打印空心三角形 * * @param c * :打印三角形时使用的字符 * @param lineNum * :三角形的行数 */ public static void emptyTest(char c, int lineNum) { // 每行打印的空格数是lineNum-行号(行号从1开始),每行打印2*行号-1个字符 for (int i = 1; i <= lineNum; i++) { int temp = lineNum - i;// 定义一个临时变量来表示行号 while (temp > 0) { System.out.print("\t"); temp--; } int j = 2 * i - 1; while (j > 0) { if (j == 1 || j == 2 * i - 1 || i == lineNum) { System.out.print(c + "\t"); } else { System.out.print("\t"); } j--; } System.out.println(); } } }
第六道题:打印倒三角:
class Solution{ /** * 打印倒三角 * * @param lineNum * @param c */ public static void printReverse(int lineNum, char c) { for (int i = lineNum; i > 0; i--) {//使用从后往前打印的方式 int temp = lineNum - i;// 定义一个临时变量来表示行号 while (temp > 0) { System.out.print("\t"); temp--; } int j = 2 * i - 1; while (j > 0) { System.out.print(c + "\t"); j--; } System.out.println(); } } }
还有很多利用字符打印特定形状的小题目,将会在以后的文章中总结。
有趣的图形打印2
最新推荐文章于 2022-09-09 09:49:09 发布