题目:
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
思路:
主要是一些转换的细节,比如+,-号只能在第一位,而且只有+,-号的不是数字,含有0-9以及正负号以外的也不能转成整数。
代码:
public static int strToInt(String str) {
if (str==null||str.length()==0){
return 0;
}
char[] chars = str.toCharArray();
int length = chars.length;
int res=0;
boolean flag=false;//标识第一位是否是+号或者-号
if ('+'==chars[0]||'-'==chars[0]){
flag=true;
}else if (chars[0]>='0'&&chars[0]<='9'){
res=chars[0]-48;
}else {
return 0;
}
for (int i = 1; i < length; i++) {
if (chars[i]>='0'&&chars[i]<='9'){
res=res*10+chars[i]-48;
}else {
return 0;
}
}
if (flag&&length==1){
return 0;//只有+,-号没有数字转换失败
}
if (flag&&chars[0]=='-'){//第一位是-号,返回负数
return -res;
}
return res;
}
网友评论