1. 程式人生 > >解決問題:java.lang.NumberFormatException: For input string: "null"

解決問題:java.lang.NumberFormatException: For input string: "null"

    在呼叫StringUtils.split()和Integer.parseInt()時經常遇見這樣的問題,不管傳入的引數的值是什麼,都能進入不為null或”“的判斷中,然後就執行執行下面的程式碼,就可能出現 java.lang.NumberFormatException: For input string: "null"的異常,提示出現問題的位置在“Integer id = Integer.parseInt(idStr);”這是因為如果傳入給Integer.parseInt()的值為空或者StringUtils.split()對空字串進行切割無意義。如果傳入的值不為null或“”可以正常執行不報錯,如果為空值就會出現任如下異常。
by: java.lang.NumberFormatException:For input string: "null"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.parseInt(Integer.java:615)
這裡的
For input string: "null"
並不是指傳入的值為空,而是指傳入的字串為“null”,而“null”並不能被StringUtils.split()切割,進而不能被Integer.parseInt()呼叫,所以會報錯。
if(customerIdStr != null && !customerIdStr.equals("") ){
			String[] customerIds = customerIdStr.split(",");
			//將字串客戶ID 轉換為整數ID
			for (String idStr : customerIds) {
			  Integer id = Integer.parseInt(idStr);
				customerRepository.updatefixedAreaId(fixedAreaId,id);
			}
		}else{
				return;
		}
所以只需要在上面的判斷語句後面再加一個判斷傳入的引數是否不為“null”的條件即可解決此類異常問題。
if(customerIdStr != null && !customerIdStr.equals("") && !customerIdStr.equals("null")){
			String[] customerIds = customerIdStr.split(",");