帮助我理解这段代码是如何工作的。它本质上是将逗号添加到一串数字中。因此,如果用户键入 1 到 3 位数字,则它不会改变。对于四位数字,它添加一个逗号,所以
- 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)。而 whilei
小于它减去的字符串的长度1
。
result
返回位置处的字符i
,因为它向下计数,它从右向左返回“相反”的字符。
nDigits
0
在循环的每次迭代中将1 from 加到 的初始值上。
我想现在是我无法确切看到发生了什么的地方:if ("nDigits % 3) == 0
。
因此,对于通过循环的两次第一次迭代,它不会执行if
循环,因为:
- 1 % 3 = 1
- 2 % 3 = 2
- 3 % 3 = 0
nDigits
开始是1
因为循环nDigits++
内的代码for
,那么它如何将逗号放在三位而不是两位之后?它如何知道只有 4 位或 5 位数字可以将逗号正确地放置在位置 1 和 2 (1,111 - 11,111) 上?