java中给数字串加逗号的方法

ha5z0ras  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(281)

作业是在从右到左的每三个数字后面加一个数字。所以数字1000000应该是1000000等等。
我对如何解决这个问题有比较好的想法,但我不知道为什么我得不到输出。也许我犯了一些我不知道的错误或者什么。。。
我认为我理解字符串是不可变的,所以它们不能就地更改,当您想将某些内容更改为字符串时,必须创建新的字符串对象。但我不明白这怎么可能:

`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;
        }
    }
snz8szmq

snz8szmq1#

我建议取消 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
dz6r00yl

dz6r00yl2#

将读取行转换为 Integer ,然后将其格式化为 String ```
String digits = readLine("Enter a numeric string: ");
Integer myInt = new Integer(digits);
String output = NumberFormat.getNumberInstance(Locale.US).format(myInt.value());

相关问题