手揣网教程/技术开发/内容

Java咖啡馆——编写猜数字游戏(3)

技术开发2023-01-22 阅读
[摘要]举个具体的例子来熟悉一下。猜数字游戏需要从控制台获取玩家输入的数字。我们先定义一个整型变量:int guess;  然后就可以编写如下代码:guess = Integer.parseInt(inpu...

    

  举个具体的例子来熟悉一下。猜数字游戏需要从控制台获取玩家输入的数字。我们先定义一个整型变量:

int guess;

  然后就可以编写如下代码:

guess = Integer.parseInt(input.readLine());

  通过input.readLine从控制台读取输入,并且用Integer.parseInt把获取的字符串类型的输入转换成整型,然后赋给guess变量。

  Eclipse又给你脸色看了——input.readLine()下面划上了红线(见图3)。

Java咖啡馆——编写猜数字游戏(3)

  看看提示,原来是未处理异常句柄。

  原来,Java有一种异常称作检查型异常(Checked Exceptions)。一般数组越界、除以零等等都是运行时异常,由于数量众多,Java允许你不必亲自捕捉每个这样的异常,而全权交给运行时环境去处理。但检查型异常就不一样了,Java把检查型异常提升到与参数、返回值同样的高度,也就是说,检查型异常你非处理不可,并且在javadoc中必须加以注释。

  那么怎样快速地捕捉这样的异常呢?按照如图3所示,用鼠标点击带有红叉的灯泡图标,在弹出菜单上选择Surround with Try/Catch,异常处理代码模块立即自动生成了。可以发现,这一句话将抛出两个异常:一个是格式异常(NumberFormatException),因为如果你用Integer.parseInt去转换一个汉字,自然是不可能的。另一个便是I/O异常,即标准输入可能会出现不可预料的问题。怎么样,连异常都能够自动捕捉,这就是Eclipse的魅力!

  需要说明的是,NumberFormatException并不是检查型异常,而是一个不必刻意捕捉的运行时异常。试试看把捕捉NumberFormatException的那个catch语句块全部删除,Eclipse也不会报错。不过,捕捉这个异常很有实用价值,后文的代码会进一步展示它的作用。

  小提示

  使用异常机制的诸多好处

  ★使得程序更健壮,界面更友善。
  ★把程序的业务逻辑与错误处理分开,代码更合理,更美观。
  ★异常可以分层次处理,使得代码更简洁。
  ★同类的异常可以归到一类一起处理,处理更方便。

  Java的异常处理机制是一个很大的话题,这里仅仅是展示了冰山一角,以实用为主,希望你能够自行阅读扩展知识,并且在编写代码过程中注意体会。

  while循环控制

  上回的Java咖啡馆介绍了for循环语句,这回需要介绍一个它的“亲戚”语句——while语句。

  while语句的语法是:

while ( expression ) {
statement(s)
}


……

相关阅读