[LeetCode]利用Double類完成字串轉整數 (atoi)
阿新 • • 發佈:2018-11-03
Double.parseDouble(String str) 能把一個String型別的變數轉換為Double型別,而且利用丟擲的異常我們還可以很好的處理無法轉換的字串,故其非常適合做atoi,而之所以不用Integer.parseInteger是因為我們可能會遇到浮點數,這時候 Integer.parseInteger就沒辦法處理了(題目要求我們轉換為整形)。
具體程式碼如下:
public class TurnInt { public static int myAtoi(String str) { boolean flag=true;//此flag用來判斷是否需要判斷第一個字元是不是字母,若取得第一個屬於0-9,或者'-','+','.'字元後則為false boolean flag1=false;//此flag用來判斷在數字後是否有非數字的字元,若有則直接break.若取得第一個屬於0-9,或者'-','+','.'字元後則為true double a=0;//存放結果 String res="";//存放待轉換字元 //遍歷輸入的str for(int i=0;i<str.length();i++){ char c=str.charAt(i); //若字元屬於0-9,或者'-','+','.'等則把其加入到帶轉換字串中 if((c>='0'&&c<='9')||c=='-'||c=='+'||c=='.'){ if(flag1&&(c=='+'||c=='-')) break; res+=c; //取得第一個屬於0-9,或者'-','+','.'字元後設置flag flag=false; flag1=true; }else if(flag&&c!=' '){ //判斷第一個非空字元是否屬於0-9,或者'-','+','.' return 0; }else if(flag1){ //檢測是否在數字後遇到不屬於0-9,或者'-','+','.'字元 break; } } try { a=Double.parseDouble(res); //利用Double封裝類進行轉換 a=(int)a; //轉回int以便返回 //判斷是否溢位 if(a>2147483647){ a=2147483647; } if(a<=-2147483648){ a=-2147483648; } }catch (Exception e){ //若存在無法轉換字元則捕獲異常輸出0,如‘+’,‘.+’等 return 0; } return a; } }