本人电子系,只为一学生。心喜计算机,小编以怡情。
public int atoi(String str) {
// write your code here
//去掉首尾空格,测试认为空格是可以忽略的
str=str.trim();
//先行判断
if(str.length()==0) return 0;
//定义两个flag
boolean isneg=false;
boolean isdigital=false;
//定义返回的数字
double ret=0;
//定义是小数的偏移量
int offset=1;
//判别是否是负数
if(str.startsWith("-"))
isneg=true;
//如果是小数的话,就从1开始
int i=0;
if (isneg) i=1;
//如果"+",也从i=1开始
if(str.startsWith("+"))
i=1;
for(;i<str.length();i++)
{
//先行判断
char tempchar=str.charAt(i);
if(tempchar<'0'||tempchar>'9')
if(tempchar!='.')
{
//这里有个要注意的地方,是负数时应该字符串用有错误,也要将负号填上
if(isneg) ret=-ret;
return (int )ret;
}
else {
isdigital = true;
//是小数的话就处理下一位!
continue;
}
//正式处理部分
if(isdigital)
{
ret=ret+Integer.parseInt(tempchar+"")*Math.pow(10,-1*offset);
//偏移量用在小数部分
offset++;
}
else
{
ret=ret*10+Integer.parseInt(tempchar+"");
}
}
//负数
if(isneg) ret=-ret;
//最终结果是否超范围
if(ret>Integer.MAX_VALUE) return Integer.MAX_VALUE;
if(ret<Integer.MIN_VALUE) return Integer.MIN_VALUE;
return (int) ret;
}