将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
public class Solution {
public static boolean flag;
public int StrToInt(String str) {
flag = true; //判断是因为输入的数字为0输出0,还是因为输入输入错误直接返回0
//注意下面的str.trim().equals("")不能写成str==""
if(str ==null || str.trim().equals("")){
flag = false;
return 0;
}
//symbol = 0表示该整数为正数 symbol=1表示该整数为负数 first = 0表示该整数第一位不是符号位 first =1表示该整数第一位为符号位
int symbol = 0;
int frist = 0;
char[] chars = str.trim().toCharArray();
if(chars[0] == '+'){
frist =1;
}
if(chars[0] == '-'){
symbol =1;
frist = 1;
}
int result = 0;
for(int i = frist; i < str.length();i++){
if(chars[i]>'9'||chars[i]<'0'){
flag = true;
return 0;
}
int sum = result * 10 +(int)(chars[i]-'0');
//判断是否溢出
if((sum -(int)(chars[i]-'0'))/10!=result){
flag = true;
return 0;
}
result = result * 10 +(int)(chars[i]-'0');
}
result = (int)Math.pow(-1,symbol)*result;
return result;
}
}