2017-02-11 58 views
-3

我試圖將字符串轉換爲整數,而無需使用任何內置的像parseInt函數()的方法,做了一些整數計算,並將其轉換回字符串。現在我可以將一個整數轉換爲一個字符串,但我需要將初始String轉換爲整數。字符串轉換爲整數,而不使用解析或其他方法

public static void main(String[] args) { 
    String s="1234"; 
    int i= (s)==1234; 
    int i2=s/2 = 617; 
    String s2=i2 = 617; 

} 
+1

什麼是應該做的那些行?該方法的第一行除外,都不會編譯。 – luk2302

+0

和往常一樣,這些非常奇怪的要求:*爲什麼*?你有什麼努力去實現你想要的?爲什麼你甚至想要這樣? – luk2302

+0

它不是實際的代碼。我只是試圖給我想要完成什麼的助手。描述應該有幫助 –

回答

0

轉換字符串沒有任何庫函數

public static int stringToInt(String number) { 
    int res = 0; 
    for (int i = 0; i < number.length(); i++) { 
     res = res * 10 + number.charAt(i) - '0'; 
    } 
    return res; 
} 

執行要執行,然後使用下面的方法將int轉換回String沒有任何庫函數的任何計算爲int

沒有任何庫函數INT轉換爲字符串

public static String parseInt(int integer) 
{ 
    boolean ifNegative = integer<0; 
    boolean ifMin = integer == Integer.MIN_VALUE; 
    StringBuilder builder = new StringBuilder();   
    integer = ifNegative?(ifMin?Integer.MAX_VALUE:-integer):integer;  
    List<Integer> list = new LinkedList<Integer>(); 
    int remaining = integer; 
    int currentDigit = 0 ; 

    while(true) 
    { 
     currentDigit = remaining%10; 
     list.add(currentDigit); 
     remaining /= 10; 
     if(remaining==0) break; 
    } 

    currentDigit = list.remove(0); 
    builder.append(ifMin?currentDigit+1:currentDigit); 
    for(int c : list) 
     builder.append(c); 
    builder.reverse().insert(0, ifNegative?'-':'+'); 
    return builder.toString(); 
} 
2

source code for Integer.parseInt可在GrepCode上獲得。它採用的是包私有方法來生成NumberFormatException錯誤,但也可以讓那些出來的代碼仍然會爲有效字符串工作。

public static int parseInt(String s, int radix) { 
    int result = 0; 
    boolean negative = false; 
    int i = 0, len = s.length(); 
    int limit = -Integer.MAX_VALUE; 
    int multmin; 
    int digit; 

    if (len > 0) { 
     char firstChar = s.charAt(0); 
     if (firstChar < '0') { 
      if (firstChar == '-') { 
       negative = true; 
       limit = Integer.MIN_VALUE; 
      } 
      i++; 
     } 
     multmin = limit/radix; 
     while (i < len) { 
      digit = Character.digit(s.charAt(i++), radix); 
      result *= radix; 
      result -= digit; 
     } 
    } 
    return negative ? result : -result; 
} 
相關問題