gpt4 book ai didi

java - 这段代码如何在每三位数字前添加逗号?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:03:02 30 4
gpt4 key购买 nike

帮助我理解这段代码是如何工作的。它本质上是将逗号添加到一串数字中。因此,如果用户键入 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)之前放置逗号。虽然 i 小于它减去 1 的字符串的长度。

result 返回位置 i 处的字符,因为它向下计数,所以返回从右向左“相反”的字符。

nDigits 在循环的每次迭代中将 1 from 添加到 0 的初始值。

我想现在是我无法准确了解正在发生的事情的地方:if ("nDigits % 3) == 0

因此对于两次循环的第一次迭代,它不会执行 if 循环,因为:

  • 1% 3 = 1
  • 2% 3 = 2
  • 3 % 3 = 0

nDigits1 开始,因为 for 循环中的 nDigits++ 代码,那么它是如何实现的把逗号放在三位数而不是两位之后?它如何知道只有 4 或 5 位数字才能将逗号正确地放在位置 1 和位置 2 (1,111 - 11,111)?

最佳答案

我认为解释这一点的最简单方法是在每次通过时放慢速度。

循环从字符串的末尾开始,所以如果您有字符串 12345,那么在第一次循环后结果将为“5”并且 nDigits 将为 1。

下一次通过时,“4”将添加到结果的前面,得到“45”,nDigits 将为 2。

第三次,它将“3”添加到结果的前面,生成“345”,然后触发 if-then 并在前面添加一个逗号。结果现在是“,345”。

更多的通行证会给你“12,345”。

我认为让您感到困惑的是循环从“5”而不是“1”开始。所有内容都添加到结果的前面,而不是像您通常期望的那样添加到结尾。

希望这对您有所帮助!

关于java - 这段代码如何在每三位数字前添加逗号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12441605/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com