題目描述
將一個字符串轉換成一個整數,要求不能使用字符串轉換整數的庫函數。 數值爲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;
}
收穫
- 永遠不要小看題目
- 永遠不要小看面試官,人家比你溜得多;