*的二种表达方式

问题:

编写代码输出以下图形

     *

   *   *

  *       *

  *           *

*       *       *

看起来是不是很简单

直接暴力法破解,

public static void main(String[] args){
//暴力
	System.out.println("    "+"*");//前面四个空格加上一个*
		System.out.println("   "+"*"+" "+"*");//前面三个空格加上一个*再空一个再加上一个*
		System.out.println("  "+"*"+"   "+"*");//前面两个空格加上一个*再空三个再加上一个*
		System.out.println(" "+"*"+"     "+"*");//前面一个空格加上一个*再加上五个空格再加上一个*
		System.out.println("*"+"   "+"*"+"   "+"*");//前面0个空格加上*加上三个空格再加上一个*再加上三个空格再加上一个*
		
	}

延申

4个三角形怎么弄出来。N*N个三角形呢?

分析:

输出1,显示一个三角形

输出2,显示4个三角形

输出3,显示9个三角形

.....

输出n,显示出n*n个三角形

规律

输入1,第一个三角形:

    *                                       前面空了4个空      *                                                        第1行
   * *                                      前面空了3个空     *  +1个空格 +*                                   第2行
  *   *                                     前面空了2个空    *+3个空格+*                                       第3行
 *     *                                    前面空了1个空  *+5个空格+*                                         第4行
*   *   *                                  前面空了0个空  *+3个空格+*+3个空格+*                       第5行
输入2,展现4个三角形

        *                                       前面空了8个空      *                                                        第1行
       * *                                      前面空了7个空     *  +1个空格 +*                                   第2行
      *   *                                     前面空了6个空    *+3个空格+*                                       第3行
     *     *                                    前面空了5个空  *+5个空格+*                                         第4行
    *   *   *                                  前面空了4个空  *+3个空格+*+3个空格+*                       第5行
   * *     * *                                前面空了3个空  *  +1个空格 +*+5个空格+*+1个空格+*  第6行
  *   *   *   *                               前面空了2个空 *+3个空格+*+3个空格+* +3个空格+*     第7行
 *     * *     *                              前面空了1个空*+5个空格+* +1个空格 +*+5个空格+*     第8行
*   *   *   *   *                            前面空了0个空*+3个空格+*+3个空格+* +3个空格+*+3个空格+*

                                                                                                                                        第9行

规律

输出n   行数为4*n+1        前面空格最多的时候为2*n

第一行:   空格2*n+*

第二行:   空格2*n-1+* +1个空格+*

第三行:   空格2*n-2 *+3个空格+* 

第四行:  空格2*n-3  *+5个空格+*

第5行:  空格2*n-4   *+3个空格+*+3个空格+* 

.....

总结

分奇数偶数进行讨论:

输出为i,行数为j,j的最大值为4*i+1 ,C为2*i

j为奇数,输出    c-2*(j/2)个空格+*+ (j-1)/2个(3个空格+* )

j为偶数,分为两种

第一种:j%4==0

输出2*c-2*(j/2)+1个空格+*+j/4-1个(1个空格 +*+5个空格+*)

第二种:j%4!=0

输出2*c-2*(j/2)+1个空格+*+1个空格 +*+j/4个(5个空格+*+1个空格+* )

最终代码

public static void f(int x)
	{
		/**
		 * 参数名称
		 * x为输出的数
		 * c为空格的数量
		 */
		int c=2*x;
		for(int j=1;j<=4*x+1;j++) {
			if(j%2==1){//奇数部分
				for(int d=1;d<=2*c-2*(j/2);d++){
				System.out.print(" ");
				}
				System.out.print("*");
				for(int y=1;y<=(j-1)/2;y++) {
					System.out.print("   "+"*");
				}
				System.out.print("\n");
			}
			else{//偶数部分
				if(j%4==0) {
					for(int d=1;d<=2*c-2*(j/2)+1;d++){
					System.out.print(" ");}
					System.out.print("*"+"     "+"*");
					for(int y=1;y<=j/4-1;y++) {
						System.out.print(" "+"*"+"     "+"*");
					}
					System.out.print("\n");
				}
				else{
					for(int d=1;d<=2*c-2*(j/2)+1;d++){
						System.out.print(" ");}
						System.out.print("*"+" "+"*");
						for(int y=1;y<=j/4;y++) {
							System.out.print("     "+"*"+" "+"*");
						}
						System.out.print("\n");
				}
			}
		}
	}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值