String to Integer总共需要考虑以下几种情况:
1.当字符串长度为0时,此时输出转换为0
2.字符串前后的空格需要去掉,这里可以直接使用trim()方法即可
3.如果出现形如"010a43"的字符串时,转换的整数以非数值之前的数值转换为准,也就是10
4.如果数值转换出现溢出,也就是大于Integer.MAX_VALUE,或者小鱼Integer.MIN_VALUE时,按照正负性对应输出最值
代码实现:
public class Main{
public static void main(String[] args){
String str = "...";
StrTOInt(str);
}
public static int StrTOInt(String str){
//1.字符串长度为零时输出0
if(str.length() == 0)
return 0;
//2.去掉前后两端的空格
str = str.trim();
//3.判断数值的正负性
int singal = 1;
int index = 0;
if(str.charAt(index++) == '-')
singal = -1;
//4.查找有效转换的数值
int total = 0;
while(index < str.length()){
int digital = str.charAt(index) - '0';
//如果到这不是数值了就跳出循环
if(digital < 0 || digital > 9)
break;
//如果此时再进行转换操作会溢出,则直接返回对应的最值
if(Integer.MAX_VALUE / 10 < total || Integer.MAX_VALUE /10 == total && Integer.MAX_VALUE % 10 < digital){
if(singal == -1)
return Integer.MIN_VALUE;
return Integer.MAX_VALUE;
}
//否则进行继续进行数据转换
total = total * 10 + digital;
index++;
}
return total * singal;
}
}