應要求,本周制作了一個判斷一個年份是否是閏年的程序。邏輯很簡單,這里就不貼代碼了。可是,在這次程序編寫中發現了一個問題。
在輸入年份時,如果輸入1)字母2)空3)超過Int上限時,就會拋exception。
問題出在String轉Int型時。
首先,在java中String轉換為Int主要有兩種方法
1.Integer.parseInt(s)
2.Integer.valueOf(s).intValue();
這兩種方法略有不同,之后再跟大家分析。
首先我使用第一種方法,當測試數據為正常的年份時,是沒有問題的,可當你測試非正常數據時就會拋出exception:
主要為NumberFormatException:
1)當你輸入為字母時,也就是內容不是數字時,如abcd
2)當你輸入為空時
3)當你輸入超出int上限時
然后我使用了第二種方法,得到的結果與第一種相同。
那怎么解決這種問題呢,使用戶能正常輸入內容
首先我想到的是使用try—catch
是程序能夠捕捉到exception,並作相應處理
以上代碼就是當輸入數據無法轉換成int型時,彈出請輸入正確年份的提示
TIPS:
1.Integer.parseInt(s)與Integer.valueOf(s).intValue()到底有什么不同呢,經過試驗感覺並沒有太大差異,但是Integer.valueOf(s)與Integer.parseInt(s)就有很大不同了,主要在於返回值不同
Integer.parseInt(s)返回值為Int型
Integer.valueOf(s)返回值為Integer,區別在於后者能夠使用Integer的一些方法。
2.在做軟件測試時不能僅僅用正常數據進行測試,因為對於軟件從業人員而言,有很多觀念根深蒂固,而一般使用者並沒有這些觀念,如果你不考慮這些使用者,那你的程序就會出現很多問題,就像這個閏年程序一樣
3.try—catch在使用中真的用處很大,一個程序執行中有很多情況下會出exception,而這個方法能夠幫助我們作相應處理。