Java咖啡館——編寫猜數(shù)字游戲(3)
發(fā)表時(shí)間:2023-08-09 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]舉個(gè)具體的例子來熟悉一下。猜數(shù)字游戲需要從控制臺(tái)獲取玩家輸入的數(shù)字。我們先定義一個(gè)整型變量:int guess; 然后就可以編寫如下代碼:guess = Integer.parseInt(inpu...
舉個(gè)具體的例子來熟悉一下。猜數(shù)字游戲需要從控制臺(tái)獲取玩家輸入的數(shù)字。我們先定義一個(gè)整型變量:
int guess;
然后就可以編寫如下代碼:
guess = Integer.parseInt(input.readLine());
通過input.readLine從控制臺(tái)讀取輸入,并且用Integer.parseInt把獲取的字符串類型的輸入轉(zhuǎn)換成整型,然后賦給guess變量。
Eclipse又給你臉色看了——input.readLine()下面劃上了紅線(見圖3)。

看看提示,原來是未處理異常句柄。
原來,Java有一種異常稱作檢查型異常(Checked Exceptions)。一般數(shù)組越界、除以零等等都是運(yùn)行時(shí)異常,由于數(shù)量眾多,Java允許你不必親自捕捉每個(gè)這樣的異常,而全權(quán)交給運(yùn)行時(shí)環(huán)境去處理。但檢查型異常就不一樣了,Java把檢查型異常提升到與參數(shù)、返回值同樣的高度,也就是說,檢查型異常你非處理不可,并且在javadoc中必須加以注釋。
那么怎樣快速地捕捉這樣的異常呢?按照如圖3所示,用鼠標(biāo)點(diǎn)擊帶有紅叉的燈泡圖標(biāo),在彈出菜單上選擇Surround with Try/Catch,異常處理代碼模塊立即自動(dòng)生成了。可以發(fā)現(xiàn),這一句話將拋出兩個(gè)異常:一個(gè)是格式異常(NumberFormatException),因?yàn)槿绻阌肐nteger.parseInt去轉(zhuǎn)換一個(gè)漢字,自然是不可能的。另一個(gè)便是I/O異常,即標(biāo)準(zhǔn)輸入可能會(huì)出現(xiàn)不可預(yù)料的問題。怎么樣,連異常都能夠自動(dòng)捕捉,這就是Eclipse的魅力!
需要說明的是,NumberFormatException并不是檢查型異常,而是一個(gè)不必刻意捕捉的運(yùn)行時(shí)異常。試試看把捕捉NumberFormatException的那個(gè)catch語句塊全部刪除,Eclipse也不會(huì)報(bào)錯(cuò)。不過,捕捉這個(gè)異常很有實(shí)用價(jià)值,后文的代碼會(huì)進(jìn)一步展示它的作用。
小提示
使用異常機(jī)制的諸多好處
★使得程序更健壯,界面更友善。
★把程序的業(yè)務(wù)邏輯與錯(cuò)誤處理分開,代碼更合理,更美觀。
★異常可以分層次處理,使得代碼更簡(jiǎn)潔。
★同類的異常可以歸到一類一起處理,處理更方便。
Java的異常處理機(jī)制是一個(gè)很大的話題,這里僅僅是展示了冰山一角,以實(shí)用為主,希望你能夠自行閱讀擴(kuò)展知識(shí),并且在編寫代碼過程中注意體會(huì)。
while循環(huán)控制
上回的Java咖啡館介紹了for循環(huán)語句,這回需要介紹一個(gè)它的“親戚”語句——while語句。
while語句的語法是:
while ( expression ) {
statement(s)
}