日期:2014-05-20  浏览次数:20715 次

数据如何能做到定长输出,Java有没有相应的API
数据如何能做到定长输出,Java有没有相应的API,
比如我有个随机数据产生的API,大概范围在1~99999999,当它为567时,我希望它输出的为00000567,当它为45678时,输出为00045678,也就是输出为定长8位,不知有没有现成的JDK的API,如果没有,那就自己写一个。


------解决方案--------------------
看看java.text.DecimalFormat可以不
如果不行就只有自己写字符串了
------解决方案--------------------
很简单一个例子
Java code

import java.text.DecimalFormat;

public class Patternp {
    public static void main(String[] args) {
        
        DecimalFormat myformat = new DecimalFormat();
        myformat.applyPattern("00000000");
        System.out.println(myformat.format(567));
    }
}

------解决方案--------------------
public class FormatNum {
public static String getFormatStr(int num) {
String str = "00000000" + num;
return str.substring(str.length() - 8);
}

public static void main(String[] args) {
System.out.println(getFormatStr(567));
}
}

运行结果: 00000567

------解决方案--------------------
探讨
很简单一个例子

Java code
import java.text.DecimalFormat;

public class Patternp {
public static void main(String[] args) {

DecimalFormat myformat = new DecimalFormat();
myformat.applyPattern("00000000");
System.out.println(myformat.format(567));
}
}

------解决方案--------------------
探讨
但如果是16进制的话,用这方法就难处理了。比如要生成00000A6E

------解决方案--------------------
[Quote=引用:]
很简单一个例子 

Java code

import java.text.DecimalFormat;

public class Patternp {
    public static void main(String[] args) {
        
        DecimalFormat myformat = new DecimalFormat();
        myformat.applyPattern("00000000");
        System.out.println(myformat.format(567));
    }
}

------解决方案--------------------
探讨
很简单一个例子

Java code
import java.text.DecimalFormat;

public class Patternp {
public static void main(String[] args) {

DecimalFormat myformat = new DecimalFormat();
myformat.applyPattern("00000000");
System.out.println(myformat.format(567));
}
}

------解决方案--------------------
DecimalFormat 和 JDK 5 新增的 Formatter 都可以做到,DecimalFormat 上面已经说了很多了,我就不说了

Formatter 在 String 对象中有个工具类 String.format

Java code
String str = String.format("%08d", num);

------解决方案--------------------
探讨
请问Formatter 如何格式化16进制的数?比如A34CE,要格式化为0000A34CE,DFA0格式化为00000DFA0