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