研究java实现打印菱形

      今天为了检验学习成果,给出了一道题,怎样实现打印菱形,说实话,费了老大的劲

才最后解决了。下面就是我的一些研究:

      我们先来了解一下用“*”和“ ”实现打印菱形,它应该是类似一个n*n的正方形,每行的“*”

从一个慢慢递增,到了中间行达到顶,然后又慢慢递减到底。还有一种,是打印空心的菱

形,那就是第一行和最后一行有一个“*”,其他中间行都是两个“*”构成。

      我研究了两种方法:

1、i 控制行,  j 控制列

public class Lx
{
	public static void main(String[] args) 
	{
		int m =7;
        	for (int i = 0; i < m; i++)
		{
            		int t =0;  	
            		if (i > m / 2) 
 			{         
                           t = m - 1 - i;
           		 }else{
               		 t = i;
            		}
			
            	for (int j = 1; j <= m; j++) 
		{
                	if (j == (m + 1) / 2 - t || j == (m + 1) / 2 + t) 
			{System.out.print("*");
               		} else{
                   		System.out.print(" ");
               			}
           	}
            	System.out.print("\n");
        	}

	}

      t代表空格,每行有多少空格,if(i>m/2)表明行数过半,t=m-1-i是t和i之间的递归关系

j==(m+1)/2-t||j==(m+1)/2+t 表示的是输出“*”条件,有定位的作用,这个程序输出的是空心菱

形,如果把条件改为 j>=(m+1)/2-t&&j<=(m+1)/2+t 就可以打印实心菱形了。

 

2、这个方法也使用了递归的思路,通过“*”和“ ”的增加、减少的规律,找到他们之间的关系。

public class Lx2{
   public static void main(String args[]){
   for(int i=1; i<=5; i++)
        {for (int space=5-i; space>0; space--)//行和空格之间的关系为space=5-i
        System.out.print(" ");
        for(int star=1; star<=2*i-1; star++)//星和空格之间的关系为star=2*i-1
        System.out.print("*");
        System.out.print("\n");
        }
   for(int i=4; i>=1; i--)
        {for(int space=5-i; space>0; space--)
        System.out.print(" ");
        for(int star=1; star<=2*i-1; star++)
        System.out.print("*");
        System.out.print("\n");
        }       
   }
}

       这个就是严格的按照从上一到下的顺序,先打印前5行,再打印下4行。就是按照先空格

后输出顺序,在空格后面输出“*”,不用多讲了,什么都得靠自己悟!

      说实话,学习语言就是学习一种思想,语言就是一种工具,它只是用来辅助实现我们

的期望的一种工具。我还是现在才被点醒的,我前十来天一直在苦练算法、死敲程序,

完全没用到自己的大脑,机械性的学习,所获很小,几可不计。学语言只要抓住它的重点

需要我们注意的东西,概念性的东西浏览一遍,记住主要的功能,就够了,在实践中学习

充分发挥自己的思想,这样才能快速熟练地掌握所学语言。重在理解!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值