2015-05-06 33 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)); 
相关问题