Java 将前导零添加到数字中

2022-09-02 23:04:41

我需要以xxx-xxxx的形式返回一个字符串,其中xxx是一个数字,xxxx是另一个数字,但是当我有前导零时,它们会消失。我正在尝试数字格式化程序,但它不起作用。

 public String toString(){
        NumberFormat nf3 = new DecimalFormat("#000");
        NumberFormat nf4 = new DecimalFormat("#0000");
        if( areaCode != 0)
            return nf3.format(areaCode) + "-" + nf3.format(exchangeCode) + "-" + nf4.format(number);
        else
            return exchangeCode + "-" + number;
    }

}

我想通了:

 public String toString(){
        NumberFormat nf3 = new DecimalFormat("000");
        NumberFormat nf4 = new DecimalFormat("0000");
        if( areaCode != 0)
            //myFormat.format(new Integer(someValue));
            return nf3.format(new Integer(areaCode)) + "-" + nf3.format(new Integer(exchangeCode)) + "-" + nf4.format(new Integer(number));
        else
            return nf3.format(new Integer(exchangeCode)) + "-" + nf4.format(new Integer(number));
    }

答案 1

有一个可以说更优雅的解决方案:

String.format("%03d-%03d-%04d", areaCode, exchangeCode, number)

答案 2

当区号为 0 时,您忘记呼叫 !除此之外,它看起来很好。前导“#”不是必需的,但不会对有效输入造成任何问题。format

我只是快速地尝试了一下,检查了一下,它对我来说很好。

public static String formatTest(int areaCode, int exchangeCode, int number) {
    DecimalFormat nf3 = new DecimalFormat("#000");
    DecimalFormat nf4 = new DecimalFormat("#0000");
    if( areaCode != 0)
        return nf3.format(areaCode) + "-" + nf3.format(exchangeCode) + "-" + nf4.format(number);
    else
        return nf3.format(exchangeCode) + "-" + nf4.format(number);
}


public static void main(String[] args) {
    System.out.println(formatTest(12, 90, 8));
    System.out.println(formatTest(1, 953, 1932));
}

输出:

012-090-0008
001-953-1932