前面18,19,20都在围绕图形输出进行说明, 本文仍然采用类似的方法进行说明。
为什么老是围绕字符输出进行说明?
1. 字符输出简单, 是计算机编程里面最简单的有输出的方法之一了
2. 字符图形输出是可以看到的, 这样程序编写的是否正确马上能看到
3. 通过不但修改您编写的称, 您可以体会程序中的各种情况
4. 最后程序输出是以后调试程序的必不可少的技能
本文的内容还是输出一个图形, 现在输出图形如下:
还是按照前面的文章的办法, 我们要分析一下这个图形输出的特点
如上图, 图形由多行组成, 因此最简单的办法, 是一行一行的输出
如下图
我们可以定义
函数f1输出 第一行,
函数f2输出 第二行,
。。。
函数f6输出 第六行。
最后需要一个主函数, 然后调用这些函数
如下:
main(){
f1();
f2();
f3();
f4();
f5();
f6();
}
先写完上面代码后,还需要写函数f1()的定义
f1(){
打印输出一个*
*
}
f2(){
打印输出2个**
**
}
…
f6(){
打印输出6个*
******
}
启动eclipse软件工具, 创建一个java项目, 创建一个类,这个是java必须的
如下图, 选择java project项目后, 在下面对话框中按照图示操作
选择完成 finish后, 请参照如下图进行操作
选择项目后, 然后,在src目录上选择右键点击, 然后在弹出的菜单上,选择new, 最后选择class项目,然后参照下图进行
如上图, 进行操作,强调两点: 1. 选择 public static void main的选项
2. 在类名哪里, 这里用汉语拼音方法命名类名, 并且每个拼音的首字母都是大写的, 这样能快速了解类名的含义
然后在main函数里面输入如下图代码:
特别注意上图中2处指向的地方, 这里是编辑自动检测出, 程序中存在的问题, 这里的问题是我们仅仅写了函数的调用, 而没有编写函数的实现。具体操作如下
类似的, 我们要定义f2()。。。。。 f6函数
代码如下:
public class ShuTuXing { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub f1(); f2(); f3(); f4(); f5(); f6(); } static void f1(){ } static void f2(){ } static void f3(){ } static void f4(){ } static void f5(){ } static void f6(){ } }
上面是一个阶段性的代码编写过程, 在这个过程中我们编写了几个空的函数, 没有任何功能的函数。
下面是逐个从f1 到 f6实现各个函数。具体的过程如下:
编写f1的函数实现
编写完成f1的功能后, 我们马上要运行这个函数看看效果
请特别注意:
通常情况下, 我们写程序都可能有问题, 因此, 我们每编写一些代码就要检验一下, 看看是否正确, 若是不正确, 由于代码还很少, 因此可以方便修改!
如下图:
我们继续完成f2函数
如上图, 完成f2后的 执行结果
继续努力, 知道完成f6函数
完成后如下图:
参考代码如下:
public class ShuTuXing { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub f1(); f2(); f3(); f4(); f5(); f6(); } static void f1(){ System.out.println("*"); } static void f2(){ System.out.println("**"); } static void f3(){ System.out.println("***"); } static void f4(){ System.out.println("****"); } static void f5(){ System.out.println("*****"); } static void f6(){ System.out.println("******"); } }
通过上面代码确实能实现相关的需求, 但是他不并好, 下面慢慢分析他完善它
上面的代码中, 几个函数的实现其实非常类似, 近似相同
是否可以把上面的代码优化为一个函数中, 然后通过函数参数来控制输出*
参数? 参数是什么, 就是在函数的定义中, 一个可以变化的量,这样可以大大提高函数的通用性
如上图, 通过在函数f中根据传入的参数, 采用if语句判断需要打印的*的个数, 然后进行处理
代码如下:
public class ShuTuXing2 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub f(1); f(2); f(3); f(4); f(5); f(6); } static void f(int count) { if(count == 1) { System.out.println("*"); } if(count == 2) { System.out.println("**"); } if(count == 3) { System.out.println("***"); } if(count == 4) { System.out.println("****"); } if(count == 5) { System.out.println("*****"); } if(count == 6) { System.out.println("******"); } } }
上面代码可以输出相关图形
上面的办法中, 已经有效的减少了函数的数量, 但是在一个函数里面还有很多重复的代码, 要通过过多的if语句来输出*, 是否还有更好的办法。
通常采用循环语句来减少重复的工作, 参考代码如下:
public class ShuTuXing3 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub f(1); f(2); f(3); f(4); f(5); f(6); } static void f(int count) { for(int i = 0; i < count; i++) { System.out.print("*"); } System.out.println(""); } }
如上面代码, 函数f中通过循环语句,进行输出, 有效减少了重复的代码
上面代码中f函数中的重复代码已经没有了, 那么主函数还可以继续优化,参考代码如下
public class ShuTuXing5 { public static void main(String[] args) { for(int i = 1 ; i <= 6 ; i++) { f(i); } } static void f(int count) { for(int i = 0; i < count; i++) { System.out.print("*"); } System.out.println(""); } }
上面代码是简单了, 但是很难让人看懂, 特别是时间长了, 可能会忘记, 因此需要给程序添加足够的说明, 就是注释!
参考代码如下:
/** 输出如下图形 * ** *** **** ***** ****** */ public class ShuTuXing6 { // 主函数, 程序从这里开始执行 public static void main(String[] args) { // 循环输出每一行 for(int i = 1 ; i <= 6 ; i++) { // 调用行输出函数, 每行的*的数量, 由变量i决定 f(i); } } /* * 输出一行* *** 其中*的数量, 有函数的参数 count决定 * */ static void f(int count) { // 循环输出count个* for(int i = 0; i < count; i++) { System.out.print("*"); } // 最后输出一个 换行符 System.out.println(""); } }