049把字符串转换成整数
题目:
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0,如果溢出也返回0
方法:转换法
思路:先要判断特殊情况,第一位是否是+,-号,如果是需要记下来,没有就当是正数;然后在循环中每一步都要判断是否溢出
代码:
public static int StrToInt(String str) {
if(str.length()==0||str.trim().equals("")) return 0;
char[] chars =str.toCharArray();
int flag=0,start=0;//flag用来判断第一个字母是正还是负,start用来判断第一个字符是否是正负号
if(chars[0]=='+'){
start=1;
}else if(chars[0]=='-'){
flag=1;
start=1;
}
int res=0;
for (int i = start; i <chars.length ; i++) {
if(chars[i]>'9'||chars[i]<'0'){
return 0;
}
res=(int)(chars[i]-'0')+res*10;
if((res>Integer.MAX_VALUE&&flag==0)
||(res>Integer.MAX_VALUE&&flag==1)){//判断溢出
return 0;
}
}
res = (int)Math.pow(-1,flag)*res;//根据正负号来输出正确结果
return res;
}