1. long number = 564; 2. String str = number+""; 3. char[] num = str.toCharArray(); 4. number = number - num[0]; /* The value of number is 511 */
予期しない値アレイ
をcharに変換した後、私は、コードのこの部分を使用して、多数の番号の最初の数字を減算しようとしています。
デバッグ中に、num [0]の値が53であることが分かりました。
1. long number = 564; 2. String str = number+""; 3. char[] num = str.toCharArray(); 4. number = number - num[0]; /* The value of number is 511 */
予期しない値アレイ
をcharに変換した後、私は、コードのこの部分を使用して、多数の番号の最初の数字を減算しようとしています。
デバッグ中に、num [0]の値が53であることが分かりました。
私はこれまで、あなたの四行目を変更することができますことをお勧め:
number = number - Long.parseLong(Character.toString(num[0]));
基本的には、どのようなここで起こっていることは、私が最初に、そしてlong
に文字列を解析された文字列にchar
(num[0]
)変換することです。
代わりに、文字列を文字配列に変換する必要はありません。文字を取得するにはcharAt()
を使用します。
number = number - Long.parseLong(Character.toString(str.charAt(0)));
それはちょうど、数値を文字列に変換する最初の文字を抽出し、数値に戻って変換し、減算する間違って感じています。数字を直接扱っている間に最初の数字を抽出してみませんか?このような何かをするだろう:
long number = 564;
int digits = 0;
assert (number > 0);
for (long num = number; num > 1; num = num/10) {
digits += 1;
}
int firstDigit = (int) (number/Math.pow(10, digits -1));
number = number - firstDigit;
System.out.println(number);
あなたはすべての数字を取得したい場合:あなたは二項演算子を使用している場合は
long number = 564;
int digits = 0;
assert (number > 0);
for (long num = number; num > 1; num = num/10) {
digits += 1;
}
for (int digit = digits - 1; digit >= 0; digit--) {
int currentDigit = (int) (number/Math.pow(10, digit)) % 10;
System.out.println(currentDigit);
}
を「 - 」より小さいデータ型を、この場合はcharで、に昇格されますlongは、num [0]( '5')のASCII値53を返します。num [0]の実際の面の値を取得するには、それをStringに変換し、Sweeperが指摘したようにLongに解析します。
「53」は文字「5」のASCIIコードです –
ありがとう、@ M.Mですが、数字を559にしたいのですが、53から5に変換することは可能ですか? – Akhilesh
あなたは48を引くことができますか? –