このコードがどのように機能するかを理解するのを手伝ってください。基本的に、数値の文字列にコンマを追加します。したがって、ユーザーが1〜3桁の数字を入力しても、変更されません。4桁の数字の場合、カンマを追加します。
- 1111は1,111になります
- 11111は11,111になります
- 111111111は11,111,111になります
等々。コードは次のとおりです。
private String addCommasToNumericString (String digits)
{
String result = "";
int len = digits.length();
int nDigits = 0;
for (int i = len - 1; i >= 0; i--)
{
result = digits.charAt(i) + result;
nDigits++;
if (((nDigits % 3) == 0) && (i > 0))
{
result = "," + result;
}
}
return (result);
}
私が理解していることを説明します
ループはfor
基本的に、最初の数字の前にコンマを入れないように、ユーザーが書いた数字の長さをカウントします(例:1111)。そして、i
は文字列の長さよりも短い間、それは減算し1
ます。
result
位置i
にある文字を返します。下向きにカウントするため、右から左に向かって「反対」の文字を返します。
nDigits
0
ループの各反復での初期値に1を追加します。
私は今、私が何が起こっているのかを正確に見るのに苦労しているところだと思います:if ("nDigits % 3) == 0
。
if
したがって、ループを介した最初の2回の反復では、次の理由でループが実行されません。
- 1%3 = 1
- 2%3 = 2
- 3%3 = 0
nDigits
ループ内のコード1
のために開始しますが、2桁ではなく3桁の後にコンマを配置するにはどうすればよいですか?そして、位置1と2(1,111〜11,111)にコンマを正しく配置するのに4桁または5桁しかない場合、どのようにしてわかりますか?nDigits++
for