有趣的图形打印2

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Tender_Li/article/details/78768225

在之前的文章《有趣的图形打印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();
		}
	}
}



还有很多利用字符打印特定形状的小题目,将会在以后的文章中总结。


猜你喜欢

转载自blog.csdn.net/Tender_Li/article/details/78768225