【實(shí)例描述】
軟件運(yùn)行過(guò)程中,經(jīng)常需要用戶輸入數(shù)值、貨幣值等信息,然后進(jìn)行處理。由于用戶輸入
只能是字符串類型,如果輸入了非法的信息,如在貨幣值中輸入了字母“a”以及其他非數(shù)字
字符,那么在運(yùn)行時(shí)會(huì)拋出異常。通常我們可以通過(guò)捕獲異常來(lái)判斷輸入信息是否合法,但這
并不是最好的處理方法。本實(shí)例將采用NumberUtils
類中的方法處理此問(wèn)題,讓程序更加快捷
方便。實(shí)例的運(yùn)行效果如圖4.11 所示。
【實(shí)現(xiàn)過(guò)程】
在Eclipse 中新建項(xiàng)目CheckNumber,并在其中創(chuàng)建一個(gè)CheckNumber.java
文件。在該類
的主方法中創(chuàng)建標(biāo)準(zhǔn)輸入流的掃描器對(duì)象,接收用戶輸入的金額。程序?qū)?duì)其是否為數(shù)字進(jìn)行
判斷并輸出提示結(jié)果。核心代碼如下所示:
protected
void do_button_actionPerformed(ActionEvent e) {
String text =
textField.getText(); // 獲取用戶輸入的金額字符串
boolean isnum =
NumberUtils.isNumber(text); // 判斷是不是數(shù)字
if (isnum) { //
輸出正確提示信息
showMessageDialog(null, "輸入正確,是數(shù)字格式");
} else { //
輸出錯(cuò)誤提示信息
showMessageDialog(null,
"輸入錯(cuò)誤,請(qǐng)確認(rèn)格式再輸入");
}
}
【代碼解析】
本實(shí)例采用了Apache 提供的lang 包中的NumberUtils
類來(lái)實(shí)現(xiàn)數(shù)字判斷,該類的全路徑
為“org.apache.commom.lang.math.NumberUtils”,這個(gè)類中的isNumber()方法可以接收字符串
參數(shù),然后對(duì)字符串進(jìn)行解析,如果字符串不能轉(zhuǎn)換為數(shù)字格式,則返回false。其聲明語(yǔ)法如
下所示:
public
static boolean isNumber(String str);
【知識(shí)擴(kuò)展】
本實(shí)例還可以通過(guò)Double
類的parseDouble()方法把字符串轉(zhuǎn)換為double
類型。如果拋出
異常說(shuō)明字符串不是合法數(shù)字格式。但是建議不要使用這種方式做判斷,那會(huì)降低系統(tǒng)的運(yùn)行
速度。因?yàn)樗鼰o(wú)法與簡(jiǎn)單邏輯判斷相比,后者在速度上完全超越前者。