您的位置:首页 > 编程语言 > Java开发

研究java实现打印菱形

2014-03-08 02:37 330 查看
今天为了检验学习成果,给出了一道题,怎样实现打印菱形,说实话,费了老大的劲

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

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

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

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

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

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

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

充分发挥自己的思想,这样才能快速熟练地掌握所学语言。重在理解!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: