2016-12-10 10 views
0

を整数に:str.charAt(i) - '0'が考慮され、それが何をするのか、なぜアスキーは、私は次のスニペットについて質問があり

while (str.length() > i && str.charAt(i) >= '0' && str.charAt(i) <= '9') { 
    result = result * 10 + (str.charAt(i) - '0'); 
    i++; 
} 

は、誰かが私に教えてもらえますか? また、結果に10を掛けた理由は何ですか?

ありがとうございます!

+0

[なぜint型数字に '0'を追加するとchar型への変換が可能になるのですか?](http://stackoverflow.com/questions/24422178/why-does-adding-a-0-to- int-digit-allow-a-charへの変換) – Joe

答えて

0

Str.CharAt(i) -'0'を実行することによって、キャラクターが0 .. 9の範囲内にある場合、カーアダプターを実数値に変換するだけです。

result = result * 10ものは新しい数字を検出(および結果に加え)

このコードされているので、おそらく変換を整数文字列を行っている、左(10進数)に前の結果を「シフト」することですまた、数字以外のチャートはスキップされているだけなので、12AAA341234に変換されるように見えるので、悪いものです。解析は、すぐにC atoiは(まだ空白をスキップ/受諾)ないように数字以外の文字が、見つかったとして、停止した場合にはStr.CharAt(i)'0'の両方が彼らを持つ文字を返すため、このすべてStr.CharAt(i) - '0'の第一を考えた

0

方が良いだろうASCII値は整数になります。

これは、文字列Strの値をとると、文字列(Str)のインデックス番号iの文字を取得することを意味します。たとえば、このストリングEmilを考えてみましょう。 "Emil".CharAt(0);は私にEを与えます。しかし、EのASCII値は69で整数です。また、0のASCII値は48です。従って"Emil".CharAt(0); - 069 - 48と等価であり(したがって2つの整数値の減算)、21の整数と戻り値になります。

Str.CharAt(i) - 0がjavaでも整数(ascii)として認識できる文字を返すので、results * 10の結果に(Str.CharAt(i) - 0)が追加されます。

はまた、あなたがより多くを理解させるために アスキー 文字にテーブルを持っている this stackoverflow pageを見てみましょう。

関連する問題