题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
思路
- 其实这道题就是要考虑周全就行,首先是字符串的鉴别啊,“+”和“-”的判别,然后我就写多了。。。。
代码
static public int StrToInt(String str) {
if (str==null||str.length()==0) //null和空字符串检验
return 0;
char [] a = str.toCharArray(); //消耗点空间呗
if (a[a.length-1]<'0'||a[a.length-1]>'9') //检查最后一个字符是否不是数字
return 0;
boolean flag = true; //加法还是减法
int number=0; //假发或者减法第二项
int result = 0; //结果
for (int i = 0; i < a.length;i++) { //写的难看的for循环
while (a[i]!='+'&&a[i]!='-') { //计算第二项
if (a[i]>'9'||((a[i]<'0')&&(a[i]!='+'||a[i]!='-')))//检测
return 0;
number = number * 10 + a[i] - '0';
i++;
if (i>a.length-1)
break;
}
if (i>=a.length-1) //到尾了
{
if (flag) //flag用于判断前一个符号是+还是-
result += number;
else if (flag==false)
result-=number;
break;
}
if (i<a.length&&a[i]=='+')
{
if (flag)
result += number;
else if (flag==false)
result-=number;
flag = true;
number = 0;
}
if (i<a.length&&a[i]=='-')
{
if (flag)
result += number;
else if (flag==false)
result-=number;
flag = false;
number = 0;
}
}
return result;
}
收获
- 永远不要小看题目
- 永远不要小看面试官,人家比你溜得多;