如何在不使用库函数的情况下将字符串转换为数字

时间:2012-09-24 12:41:52

标签: java

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

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()

2 个答案:

答案 0 :(得分:14)

不使用库函数,从每个数字字符中减去字符'0'以获得其int值,然后在添加下一个数字{之前将当前总和乘以10来建立数字{ {1}}值。

Java 7

ìnt

Java 8

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;
}

这主要是因为字符public static int getNumber(String number) { return number.chars().reduce(0, (a, b) -> 10 * a + b - '0'); } 具有连续的ascii值,因此从其中任何一个中减去0-9都会为您提供与字符'0'的偏移量,这当然是等效的数字这个角色。


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

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


这是一些测试代码:

'0'

输出:

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

答案 1 :(得分:-3)

使用Integer.parseInt(str)。类LongShortDouble也有类似的方法。