Java中数字串加逗号的方法

Method for adding commas to digit string in Java

作业是从右往左看,每三位数字后面加一个。所以数字 1000000 应该是 1,000,000 等等

我比较清楚如何解决这个问题,但我不知道为什么我没有输出。也许我犯了一些我不知道的错误......

我认为我理解字符串是不可变的概念,因此它们不能就地更改,当您想将某些内容更改为字符串时,您必须创建新的字符串对象。但我不明白这怎么可能:

`result = ch + result;` 

还有这个

result = "," + result;

我哪里错了?

   import acm.program.*;
   import acm.util.*;

    public class AddCommasToNumericString extends ConsoleProgram{

        public void run(){
            while(true){
                String digits = readLine("Enter a numeric string: ");
                if (digits.length() == 0) break;
                println(addCommasToNumericString(digits));
            }
        }

        public String addCommasToNumericString(String digits){
            String result = "";
            int counter = 0;
            for (int i = digits.length()-1; i <= 0 ; i--){
                char ch = digits.charAt(i);
                result = ch + result;
                counter++;
                if (counter % 3 == 0){
                    result = "," + result;
                }
            }
            return result;
        }
    }

我建议删除 counter 并通过进行小的更改仅使用循环变量:

public String addCommasToNumericString(String digits) {
    String result = "";
    for (int i=1; i <= digits.length(); ++i) {
        char ch = digits.charAt(digits.length() - i);
        if (i % 3 == 1 && i > 1) {
            result = "," + result;
        }
        result = ch + result;
    }

    return result;
}

addCommasToNumericString("123");     // 123
addCommasToNumericString("12345");   // 12,345
addCommasToNumericString("1234567"); // 1,234,567

将读取的行转换为Integer,然后将其格式化为String

String digits = readLine("Enter a numeric string: ");
Integer myInt = new Integer(digits);
String output = NumberFormat.getNumberInstance(Locale.US).format(myInt.value());