研究java实现打印菱形

来源:互联网 发布:js object 删除属性 编辑:程序博客网 时间:2024/05/03 18:23

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

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

      我们先来了解一下用“*”和“ ”实现打印菱形,它应该是类似一个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