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値を加算します。

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

Java 8

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

これは主に、文字0-9が連続したASCII値を持っているために機能します。したがって'0'、それらのいずれかから減算すると、文字からのオフセットが得られます'0'。これは、もちろん文字と同等の数値です。


免責事項:このコードは、負の数、算術オーバーフロー、または不正な入力を処理しません。

これらに対応するためにコードを拡張することをお勧めします。このような機能を実装することは、特にこれが明らかに宿題であることを考えると、有益です。


ここにいくつかのテストコードがあります:

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

出力:

12345
于 2012-09-24T12:53:23.237 に答える
-4

を使用しInteger.parseInt(str)ます。クラス、、LongShortDouble同様のメソッドがあります。

于 2012-09-24T12:45:04.243 に答える