有趣的图形打印2

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



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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值