2012-02-27 141 views
-8

是否可以將字符串轉換爲long而不使用java的內置函數?將字符串轉換爲長

例如:

String s = "35"; 
long ans = Long.parseLong(s); 

你怎麼能執行相同的任務,而無需使用Java的Long.parseLong function

+12

你爲什麼要?這是功課嗎?如果是這樣,請添加作業標籤。 – 2012-02-27 19:44:10

+0

通過查看parseLong();-)的源代碼 – 2012-02-27 19:45:02

+0

是;你可以重寫'parseLong()'。 – SLaks 2012-02-27 19:45:23

回答

7

是的,這是可能的。只要用傳統的方式來做就行了。使用String.charAt()從單位開始獲取每個字符,然後乘以10的因子並不斷累加,直到達到字符串的起始位置。當然,你必須照顧特殊情況。

1

是:

public static void main(String[] args) { 
    String s = "35"; 
    long ans = parse(s); 
} 

public final static long parse(CharSequence d) { 
    int l = d.length(); 
    boolean n= d.charAt(0) == '-'; 
    long v = 0; 
    int p = n?1:0; 
    do { 
     v *= 10; 
     int i = d.charAt(p) - 48; 
     if (i < 0 | i > 9) 
      throw new NumberFormatException(d+""); 
     v += i; 
     p++; 
    } while (l > p); 
    return n?-v:v; 
}