您的位置:首页 > 其它

将数字字符串转化成整数值

2017-10-31 15:34 302 查看
/**
* Created by lxw, liwei4939@126.com on 2017/10/31.
* 将数字字符串转化成整数值
*/
public class strToInt {

public static boolean isValid(char[] arr){
if(arr[0] != '-' && (arr[0] < '0' || arr[0] > '9')){
return false;
}
if(arr[0] == '-' && (arr.length == 1 || arr[1] == '0')){
return false;
}
if(arr[0] == '0' && arr.length > 1){
return false;
}
for (int i =1; i< arr.length; i++){
if(arr[i] < '0' || arr[i] > '9'){
return false;
}
}
return true;
}

public static int convert(String str){
if(str == null || str.equals("")){
return 0;
}
char[] strArr = str.toCharArray();
if(!isValid(strArr)){
return 0;
}
boolean posi = strArr[0] == '-'? false : true;
int minq = Integer.MIN_VALUE / 10;
int minr = Integer.MIN_VALUE % 10;
int res = 0;
int cur = 0;
for (int i = posi ? 0 : 1; i < strArr.length; i++){
cur = '0' - strArr[i];
if(res < minq || (res == minq && cur < minr)){
return 0;
}
res = res *10 +cur;
}
if(posi && res == Integer.MIN_VALUE){
return 0;
}
return posi ? -res : res;
}

public static void main(String[] args){
String str1 = "123";
System.out.println(convert(str1));
String str2 = "023";
System.out.println(convert(str2));
String str3 = "a23";
System.out.println(convert(str3));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐