2015-05-06 39 views
3

我目前正在使用此代碼把字符串轉換成一個數字:最有效的方式來獲得一個子不超過字符串長度

public static int getDigit(String whole, int sub) { 
    int d = Integer.parseInt(whole.substring(sub, sub+1)); 
    print(Integer.toString(d)); 

    return d; 
} 

但是,當我試圖讓最後一個數字我碰上錯誤的,我知道的原因,但有什麼辦法來克服這個問題,就像一個算法,比我的例子在這裏執行這個其他(有效的方法):

public static int getDigit(String whole, int sub) { 
    int d = 0; 

    if (sub < whole.length()) 
     d = Integer.parseInt(whole.substring(sub, sub+1)); 
    else 
     d = Integer.parseInt(whole.substring(sub)); 
    print(Integer.toString(d)); 

    return d; 
} 

注:請忽略代碼,我還沒有任何錯誤沒有測試第二個例子。第一個例子顯然有錯誤。

+0

刪除'else'部分,它會工作。此外,當您打印整數/整數時,您不必調用'Integer.toString()'。 – alfasin

+2

如果'sub'等於字符串的長度,那麼你期望輸出什麼?它指向字符串結束後;數字的索引爲'0'到'whole.length() - 1'。在字符串結尾後沒有數字要被解析。 – Jesper

+3

這甚至不應該編譯 - 'd'還沒有被初始化。 – copeg

回答

3

另一種方法(假設您期待單個字符爲'數字')將通過拉動char並將其轉換爲int來處理傳遞索引處的字符。

這可以通過Character classgetNumericValue(char ch)方法完成。

int d = Character.getNumericValue(whole.charAt(sub)); 
相關問題