2017-12-08 9 views
0

Char.toInt()は、数値ではなく文字のASCIIコードを返します。では、どうやってCharを正しい数値の整数に変換するのですか?数字Char(0-9)を数値に変換するにはどうすればよいですか?

+1

が 'あるjava.lang.Character.getNumericValue()':https://stackoverflow.com/questions/4968323/java-parse-int-value-from-a-char/21441921# 21441921 – Vadzim

+1

私は、リンクされたdupの質問はより具体的で、これを重複して閉じるために不適切なタイトルが付けられていると思います。 – Vadzim

答えて

0

回答:

あなたはtoInt()によって返されたASCIIコードから48をsubstractsチャークラスの拡張機能を作成することができます。これは、あなたに文字の適切な数値を与えるでしょう!

fun Char.getNumericValue(): Int { 
    if (this !in '0'..'9') { 
     throw NumberFormatException() 
    } 
    return this.toInt() - '0'.toInt() 
} 
+2

isDigitは必ずしも '0-9'ではない文字に対して' true'を返すので、これは技術的には間違いです。 '1 '、' 'ARABIC-INDIC DIGIT ONE'(U + 0661)'、**は数字**ですが、toInt() - 48は代わりに1585を返します。代わりに 'this '' 0 '..' 9''を代わりに使いたいかもしれません。 – Moira

+0

ありがとう、あなたのフィードバックに応じて答えを更新しました。 – Incinerator

1

また、それはStringに変換し、より明白であるかもしれないtoInt()を使用することができます。 JVM上

fun Char.getNumericValue(): Int { 
    if (!isDigit()) { 
     throw NumberFormatException() 
    } 
    return this.toString().toInt() 
} 
+0

確かに、私は操作を何回も実行する必要があると効率的ではないと思いますか?私が間違っているなら、私を修正してください! – Incinerator

関連する問題