你肯定玩过猜数字游戏?游戏随机给出一个0至99(包括0和99)之间的数字,然后让你猜是什么数字。你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。经过几次猜测与提示后,最终推出答案。(见图1)
首先搭建Java程序框架。打开Eclipse,新建名为GuessNumberGame的项目,然后新建名为GuessNumber的Java类。别忘记给GuessNumber加上合适的javadoc。
第一步:随机数的产生
我们可以借助Java API提供的Random类来产生一个随机数。
首先在main函数中加入以下三行代码:
// 新建一个随机数产生器,然后生成一个0到99之间的整数。
Random random = new Random();
int number = random.nextInt(100);
不出所料,Eclipse就像语文老师一样,立即在错误语句处划出红线,把鼠标移动到红线上,可以看到具体出错信息(见图2)。
包(Package)的概念
Java API中包含了极其丰富、类似于Random这样由Sun预先定义好的类(Class,如果忘记相关概念,请参考第四篇连载?《品味第一杯咖啡》),与变量作用域的问题一样,不同包中可以有同名同姓的类,如果没有包的概念,就会遇到命名冲突问题。此外,包还能进行安全控制,你可以规定哪些类可以被包外部调用,哪些不可以。
Random类是在java.util这个包中。可以手动在源程序顶部输入import java.util.Random;语句来申明该程序将要使用java.util包中的Random类,然而有了Eclipse,就不用那么麻烦了?把光标移动到有红色波浪线的Random上,然后按下Ctrl+Shift+M,Eclipse会自动帮你完成导入的工作了。此时保存一下源代码,警告是不是消失了?希望你牢记这个快捷键的用法,在开发大型项目时,再好的脑子也无法牢记每个类所在的包的名字,有了Eclipse的鼎力相助,偷个懒也没问题。
语句翻译
第一句定义了一个类型是Random类的变量random(Java语言区分大小写,所以Random和random是两回事儿),并且用new操作符生成一个Random类的实例赋给random变量。还记得我们上期连载说到变量还有一种引用类型吗?这就是一个例子。random变量实际上是一个参照,指向内存中用new操作符新建的Random类的实例。说起来很拗口,大多数情况下可以把random直接看做是一个Random类的实例,可以通过“random”加上“.操作符”来调用Random类的方法,比如用random.nextInt(100)来获取一个0至99之间的随机数。