把字符串转换成整数
题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
思路分析
在转换过程中需要注意正负号、是否溢出这两个问题。代码如下:
public static int StrToInt(String str) {
if (str==null||str.length()==0)return 0;
char c = str.charAt(0);
if(c=='-'){
return transfer(str.substring(1),false);
}else if (c=='+'){
return transfer(str.substring(1),true);
}else if(c>='0'&&c<='9'){
return transfer(str,true);
}
return 0;
}
private static int transfer(String str,boolean sign) {
if (str==null||str.length()==0)return 0;
char[] chars = str.toCharArray();
long num=0;
for (int i = 0; i < chars.length; i++) {
if (chars[i]<='9'&&chars[i]>='0'){
num=num*10+chars[i]-'0';
}else {
return 0;
}
}
if (sign&&num>Integer.MAX_VALUE)return 0;
if (!sign &&-num<Integer.MIN_VALUE)return 0;
return sign?(int) num:(int)-num;
}