Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法将逗号插入到大数字中_Java_Number Formatting - Fatal编程技术网

Java 方法将逗号插入到大数字中

Java 方法将逗号插入到大数字中,java,number-formatting,Java,Number Formatting,是否有一个已经存在的方法,如果没有,是否可以编写一个可以格式化大数字并在其中插入逗号的方法 100 = 100 1000 = 1,000 10000 = 10,000 100000 = 100,000 1000000 = 1,000,000 public String insertCommas(Integer largeNumber) { } 你看过(摘要NumberFormat的派生词)了吗?您可以根据需要更改格式 DecimalFormat myFormatt

是否有一个已经存在的方法,如果没有,是否可以编写一个可以格式化大数字并在其中插入逗号的方法

100     = 100
1000    = 1,000  
10000   = 10,000
100000  = 100,000
1000000 = 1,000,000


public String insertCommas(Integer largeNumber) {

}
你看过(摘要
NumberFormat
的派生词)了吗?您可以根据需要更改格式

DecimalFormat myFormatter = new DecimalFormat("###,###.###");
String output = myFormatter.format(value);

还请注意,您可以根据区域设置确定格式。

您是否尝试过
java.text.NumberFormat

您可以使用:

区域设置对象表示特定的地理、政治或地理位置 文化区。需要区域设置才能执行其操作的操作 该任务称为区域设置敏感任务,并使用该区域设置进行定制 为用户提供的信息。例如,显示一个数字是一个简单的过程 区域设置敏感操作-应根据 用户所在国家、地区的风俗习惯, 或文化


这将打印:

10,000,000

旁注:在Java 7中,您可以编写带下划线的
int
:1_000_000。

使用
NumberFormat
您可以轻松完成以下操作:

NumberFormat format = NumberFormat.getInstance(Locale.US);

System.out.println(format.format(100));
System.out.println(format.format(1000));
System.out.println(format.format(1000000));
将输出:

100
1,000
1,000,000

我试着非常清楚我在做什么,这可以用更少的行来完成

算法很简单,我反转输入字符串,然后使用正则表达式分割数字,在每个匹配中添加逗号

如果模块3的数字大小为零(例如123456),则必须删除最后一个逗号

现在我们通过再次反转来恢复原始字符串顺序,瞧

public String insertCommas(Integer largeNumber) {

    String result;
    String reversedNum = new StringBuilder(""+largeNumber).reverse().toString();
    String reversedResult = "";

    Pattern pattern = Pattern.compile("\\d{3}");
    Matcher matcher = pattern.matcher(reversedNum);

    int lastIndex = reversedNum.length();
    while(matcher.find()){
        reversedResult += matcher.group()+",";
        lastIndex = matcher.end();
    }

    String remaining = reversedNum.substring(lastIndex);
    reversedResult += remaining; 
    result =  new StringBuilder(reversedResult).reverse().toString();
    if(remaining.isEmpty()){
        result =  new     StringBuilder(reversedResult).reverse().toString().substring(1);
    }else{
        result =  new StringBuilder(reversedResult).reverse().toString();
    }

    return result;
}

哈哈,我以为他想做些家庭作业。顺便说一下,正确的方法是使用NumberFormat
public String insertCommas(Integer largeNumber) {

    String result;
    String reversedNum = new StringBuilder(""+largeNumber).reverse().toString();
    String reversedResult = "";

    Pattern pattern = Pattern.compile("\\d{3}");
    Matcher matcher = pattern.matcher(reversedNum);

    int lastIndex = reversedNum.length();
    while(matcher.find()){
        reversedResult += matcher.group()+",";
        lastIndex = matcher.end();
    }

    String remaining = reversedNum.substring(lastIndex);
    reversedResult += remaining; 
    result =  new StringBuilder(reversedResult).reverse().toString();
    if(remaining.isEmpty()){
        result =  new     StringBuilder(reversedResult).reverse().toString().substring(1);
    }else{
        result =  new StringBuilder(reversedResult).reverse().toString();
    }

    return result;
}