记得刚开始学Java的时候看到MOOC上有个老师写了一个猜数字的游戏,出于兴趣,小风就写了一个猜单词的小游戏来描述
OOP编程的思维方式。PS:OOP(Object Oriented Programing,面向对象程序设计)可以理解为计算机编程的一种架构。
好了,不BB了。开始了!
首先我们按照常规的面向过程的思维方式来分析这个程序。仅仅定义Demo一个类,该类中存放所有的逻辑代码
由于便于理解,程序先成员的位置上定义两个字符串数组english和chinese。即一个用来存储英文单词,一个用来存储单词对应的中文意思。
String english = {"deprecated", "category", "figure", "confirm", "profile", "argument"};//用来存储英文单词,你可以自己设置存储多少个
String chinese = {"不赞成", "类型", "数字", "确认", "侧面", "争论"};//用来存放对应的中文意思,
注意顺序保持一致。
接着,通过Math类中的random方法获取一个范围在0到english长度之间的随机数i,然后将i作为索引,打印出english[i];并返回chinese[i].
将此部分代码封装成show方法。如下所示:
// 随机从arr1中抽取一个单词显示在控制台,并返回他的中文意思 public String show() { int i = (int) (Math.random() * arr1.length);// 产生一个随机数 System.out.println(arr1[i]); return arr2[i]; }
接下来需要实现用户通过键盘来输入一个字符串,在Java中的util包下有一个Scanner类,该类是JDK5.0之后新增的特性,用来实现用户从键盘输入信息。
这里我们便需要用到Scanner类。因此也要在程序的开头带入该类。同样这部分代码我们也将之封装成方法。
// 用户的输入 public String input() { Scanner in = new Scanner(System.in); // 接受用户的输入值 String sum = in.nextLine(); // 返回用户输入的值 return sum; }
有了用户的输入,下一步自然就是将用户的输入和show方法返回的值进行比较了,这里有个代码优化的小技巧,自己慢慢体会。
// 判断用户的输入 public boolean judge(String str1, String str2) { /* //这样写便于理解,但比较消耗内存空间 boolean flag = false; if (str1.equals(str2)) { flag = true; } return flag; */ //可以这样简化代码,稍微节省内存 /*boolean flag = str1.equals(str2); return flag;*/ //这样更加简洁,一行代码就搞定!更加节省内存。推荐这样用,爽不爽!!! return str1.equals(str2); }
好了,基本的过程似乎已经完成了!不过为了程序的体验,这里我将用户猜单词的结果显示单独封装成一个 方法
原因是:你想想,考试的时候你每做一道题就能够知道你的答案对不对么?所以我这里将用户猜的结果单独封装成一个方法,当需要做一个题就知道答案正不正确的情况下
调用就可以了。当要模拟考试的情况时,直接根据judge方法返回的布尔值记录分数即可,不调用该方法。
// 给用户反馈信息 public void showMessage(boolean flag) { if (flag) { System.out.println("恭喜你答对了!"); } else { System.out.println("不好意思,你答错了"); } return; }
好了,程序到这里就基本已经完成了。剩下的就剩下我们的程序的入口main方法了。在main里面创建Demo类的对象d。然后通过d去按顺序调用逻辑方法即可
代码如下:
public static void main(String[] args) { Demo d = new Demo(); System.out.println("欢迎来记单词!"); //调用show方法用来显示出现的单词 String str1=d.show(); System.out.println("请输入他的中文意思:"); //用户输入中文意思 String str2= d.input(); //判断用户的输入是否正确 boolean ans = d.judge(str1, str2); //将用户猜的信息输出 d.showMessage(ans); }
嗯!程序已经完成了。下面就可以试试运行的结果了,下图是我运行的结果:
嗯,还行,程序能够正常的跑起。不过我想了想,觉得似乎有哪里不对啊。一般的开发中,main方法里含有大量的逻辑代码貌似并不理智吖。于是下面来尽行改进!
//执行函数 public static void start() { Demo d = new Demo(); System.out.println("欢迎来记单词!"); //调用show方法用来显示出现的单词 String str1=d.show(); System.out.println("请输入他的中文意思:"); //用户输入中文意思 String str2= d.input(); //判断用户的输入是否正确 boolean ans = d.judge(str1, str2); //将用户猜的信息输出 d.showMessage(ans); }
将主函数中大量的逻辑代码进行抽取,单独封装到一个成员方法中,接着直接在main方法中调用该方法即可。
public static void main(String[] args) { //开启执行函数 start(); }
看,这样main方法中就只有一行代码!这样是不是很完美!
好了,以上就是以面向过程的思维方式编写的整个猜单词的小程序,快去试试吧!
下一篇文章我将用面向对象的思维方式来用代码描述这个小程序。