私は本当に理解できないことで立ち往生しています。ここの誰かが理解してくれることを願っています。
「nextOne」が値51を保持する理由を誰か説明できますか? 式配列のインデックス 2 が数値 3 であることは明らかですが、なぜ nextOne に 3 ではなく 51 を格納するのでしょうか?
ここにあります:
私は本当に理解できないことで立ち往生しています。ここの誰かが理解してくれることを願っています。
「nextOne」が値51を保持する理由を誰か説明できますか? 式配列のインデックス 2 が数値 3 であることは明らかですが、なぜ nextOne に 3 ではなく 51 を格納するのでしょうか?
ここにあります:
配列内の文字は「3」です。それは 51 の Unicode 値を持っています - それは文字 U+0033 です。
のタイプnextOne
をではなく に変更すると、char
代わりにint
「3」が表示されます。
文字としての数字と整数値の違いを理解することは重要です。また、文字の背後に潜む数字を理解することも重要です。Java では、基本的に UTF-16 コード単位です。
51 は数値の ASCII 値であるため3
です。
文字'3'
は整数値51
(ASCII/Unicode 値) に対応します。
51 は 3 の ASCII コードです。expression
は char の配列であり、 でnextOne
あるint
ため、char を int に変換する必要があります。
nextOne には文字 の値が含まれます。文字 '3' の場合は 51 です。
文字で表される数字が必要な場合は、変換する必要があります。ASCII では、文字「0」の値を減算することで実行できます。
最初の桁は3
で、その ASCII コードは 51 です。
やったよ!それは今うまくいきます、そして私はあなたたちなしではそれをすることができなかったでしょう。でも!皆さんが私にオプションを提案したのはおかしいですが、(私の意見では)究極のオプションではありません。保存されていた整数は、実際の整数3ではなく、3のASCIIコードであると皆さんは私に言いました。これは、CharacterクラスのメソッドgetNumericValue(char)を思い出させました。このメソッドを使用すると、自分自身を変換せずに、char配列から整数3を取得するだけでした。
nextNumber = nextNumber * 10 + Character.getNumericValue(expression[k]);
アップロードされた画像へのリンクを編集してくれた@howardに感謝します
数値 3 の ASCII コードは 51 です。次の式が"true"
コンソールに出力されます。
System.out.println('3' == (char) 51);
詳細については、ASCII テーブルを参照してください。
'0'
整数値を取得するために減算する必要がある数字が必要な場合は、文字「3」のASCIIコードが表示されます