9

假设我想创建一个将数字作为字符串并返回其数字形式的方法。喜欢

getNumber("123456");

public int getNumber(String number) {

    //No library function should used. Means i can't do Integer.parseInteger(number).

} //end of getNumber()

我该如何实现该方法,例如

public int getNumber(String number) {

    for (int i=0; i<number.length; i++) {

    char c = number.getCharacter(i);
    ///How can i proceed further

    } //end of for()

} //end of getNumber()
4

2 回答 2

20

在不使用库函数的情况下,'0'从每个数字字符中减去该字符以获得其int值,然后通过将当前总和乘以 10 来建立数字,然后再添加下一个数字的ìnt值。

爪哇 7

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

爪哇 8

public static int getNumber(String number) {
    return number.chars().reduce(0, (a, b) -> 10 * a + b - '0');
}

这主要是因为字符0-9具有连续的 ascii 值,因此从其中减去'0'任何一个都会为您提供与 character 的偏移量'0',这当然是字符的数字等价物。


免责声明:此代码不处理负数、算术溢出或错误输入。

您可能希望增强代码以满足这些要求。实现这样的功能将是有益的,尤其是考虑到这显然是家庭作业。


下面是一些测试代码:

public static void main(String[] args) {
    System.out.println(getNumber("12345"));
}

输出:

12345
于 2012-09-24T12:53:23.237 回答
-4

使用Integer.parseInt(str). 类Long, Short,Double也有类似的方法。

于 2012-09-24T12:45:04.243 回答