研究java实现打印菱形
2014-03-08 02:37
330 查看
今天为了检验学习成果,给出了一道题,怎样实现打印菱形,说实话,费了老大的劲
才最后解决了。下面就是我的一些研究:
我们先来了解一下用“*”和“ ”实现打印菱形,它应该是类似一个n*n的正方形,每行的“*”
从一个慢慢递增,到了中间行达到顶,然后又慢慢递减到底。还有一种,是打印空心的菱
形,那就是第一行和最后一行有一个“*”,其他中间行都是两个“*”构成。
我研究了两种方法:
1、i 控制行, j 控制列
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、这个方法也使用了递归的思路,通过“*”和“ ”的增加、减少的规律,找到他们之间的关系。
这个就是严格的按照从上一到下的顺序,先打印前5行,再打印下4行。就是按照先空格
后输出顺序,在空格后面输出“*”,不用多讲了,什么都得靠自己悟!
说实话,学习语言就是学习一种思想,语言就是一种工具,它只是用来辅助实现我们
的期望的一种工具。我还是现在才被点醒的,我前十来天一直在苦练算法、死敲程序,
完全没用到自己的大脑,机械性的学习,所获很小,几可不计。学语言只要抓住它的重点
需要我们注意的东西,概念性的东西浏览一遍,记住主要的功能,就够了,在实践中学习
充分发挥自己的思想,这样才能快速熟练地掌握所学语言。重在理解!
才最后解决了。下面就是我的一些研究:
我们先来了解一下用“*”和“ ”实现打印菱形,它应该是类似一个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行。就是按照先空格
后输出顺序,在空格后面输出“*”,不用多讲了,什么都得靠自己悟!
说实话,学习语言就是学习一种思想,语言就是一种工具,它只是用来辅助实现我们
的期望的一种工具。我还是现在才被点醒的,我前十来天一直在苦练算法、死敲程序,
完全没用到自己的大脑,机械性的学习,所获很小,几可不计。学语言只要抓住它的重点
需要我们注意的东西,概念性的东西浏览一遍,记住主要的功能,就够了,在实践中学习
充分发挥自己的思想,这样才能快速熟练地掌握所学语言。重在理解!
相关文章推荐
- 用java实现打印菱形,空心菱形
- java实现 打印菱形
- 打印菱形源码(java实现)
- Java实现打印实心与空心菱形
- 利用java实现打印菱形
- java 实现打印输出一个空心菱形
- java代码实现打印菱形
- java实现乘法口诀和打印菱形
- Java实现打印菱形
- java实现打印菱形
- java实现打印菱形
- 蓝桥杯第六届省赛JAVA真题----打印菱形
- Java____Timer实现定时功能及其源码研究
- java-第二章-升级我行我素购物管理系统,实现打印小票和计算积分功能.
- java实现打印list中重复次数最多的前n个数据
- 链表的正逆序打印 java语言实现
- 【剑指offer——JAVA实现】顺时针打印矩阵(含思路解答示意图)
- Java控制台超级菱形打印方法
- 在java中实现对FORM的打印功能
- 对一致性Hash算法,Java代码实现的深入研究