1. 程式人生 > >Java中String轉int型別出現的問題及解決方式

Java中String轉int型別出現的問題及解決方式

一般在Java中String轉為Int主要有兩種方法:
1. Integer.parseInt(str);
2. Integer.valueOf(str);

ps:兩者的不同之處:
Integer.parseInt(s)返回值為Int型
Integer.valueOf(s)返回值為Integer,區別在於後者能夠使用Integer的一些方法。


轉換出現問題時,一般是報NumberFormatException:
1) 輸入為空時
2) 輸入為字母時,如abcd等,不為數字的情況時
3) 輸入超出int上限時


針對情況1)可以做判斷是否為空;
針對情況2)可以做正則表示式校驗;
針對情況3)可以用try-catch;
可以通過try-catch作出相應的友好提示:

try{
    if(StringUtils.isEmpty(str)){
        System.out.println("不能為空");
    }
    attern pattern = Pattern.compile("[0-9]*"); 
    Matcher isNum = pattern.matcher(str); 
    if( !isNum.matches() ){ 
        System.out.println("必須為數字");
    }
    Integer i = Integer.valueOf(str);
}catch(NumberFormatException e){
    System.out.println("超過上限");
}

對於情況3),可能有一種情況必須要轉為int型別,比如時間轉為時間戳,由13位的時間戳字串轉為int型別,可能有超過上限的情況,處理方法可以通過String轉為Long,處理之後,再轉為int。

String timeStr = "1527498005000";
Long timeLong = Long.parseLong(timeStr )/1000;
Integer timeInt = timeLong.intValue();