数据如何能做到定长输出,Java有没有相应的API

流子
游戏开发领域优质创作者
博客专家认证
2008-07-24 02:56:00
数据如何能做到定长输出,Java有没有相应的API,
比如我有个随机数据产生的API,大概范围在1~99999999,当它为567时,我希望它输出的为00000567,当它为45678时,输出为00045678,也就是输出为定长8位,不知有没有现成的JDK的API,如果没有,那就自己写一个。
...全文
1022 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT_熊 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
很简单一个例子

Java code


import java.text.DecimalFormat;

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

DecimalFormat myformat = new DecimalFormat();
……
[/Quote]
String str = String.format("%07d", 567);
这样简单
lxh861206 2011-10-14
  • 打赏
  • 举报
回复
int i = 11345459;
String aaa = Integer.toHexString(i);
System.out.println(aaa);
aaa=("0000000" + aaa).substring(String.valueOf(aaa).length());
System.out.println(aaa);
dalang81 2009-08-13
  • 打赏
  • 举报
回复
int i = 11345459;
String aaa = Integer.toHexString(i);
System.out.println(aaa);
aaa=("0000000" + aaa).substring(String.valueOf(aaa).length());
System.out.println(aaa);
hlwdim 2008-07-29
  • 打赏
  • 举报
回复
最简单的方法就是格式化输出了
chendabian 2008-07-29
  • 打赏
  • 举报
回复
这个要好好标记一下 , 有用
xuhaiyang 2008-07-26
  • 打赏
  • 举报
回复
format一下
huhk 2008-07-26
  • 打赏
  • 举报
回复
长见识了
magicxin031 2008-07-26
  • 打赏
  • 举报
回复
这种格式不知道实用性大不大,具体用在哪方面呢,如果用处不大就没必要了把。
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 jiangguilong2000 的回复:]
请问Formatter 如何格式化16进制的数?比如A34CE,要格式化为0000A34CE,DFA0格式化为00000DFA0
[/Quote]

String str = String.format("%09x", 0xA34CE);
%08x 采用 9 位小写的十六进制字符,这个可以格式化成为:0000a34ce

String str = String.format("%09X", 0xA34CE);
%08x 采用 9 位大写的十六进制字符,这个可以格式化成为:0000A34CE
  • 打赏
  • 举报
回复
DecimalFormat 和 JDK 5 新增的 Formatter 都可以做到,DecimalFormat 上面已经说了很多了,我就不说了

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

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


%d 表示格式化的参数是整数类型(byte, short, int, long 或者是 BigInteger)
08 表示格式化后总共占据 8 个字符的位置,原数值不满 8 位的在前面添加“0”。
如果是:%8d 表示格式化后总共占据 8 个字符的位置,不满 8 位时在前面添加空格凑足 8 位,即数值靠右边
如果是:%-8d 与 %8d 类似,只不过不足 8 位时在后面添加空格,即数值靠左边

具体的可以看看 JDK 5 java.util.Formatter 的 API DOC,这个格式化器
对数值、日期类型进行格式化的功能非常强大!

Formatter 还可以格式化成 16 进制的数:


String str = String.format("%08x", num); 或
String str = String.format("%08X", num);

mayuanfei 2008-07-26
  • 打赏
  • 举报
回复
还有一种方法.
int a = 4567;
("00000000"+a).substring(String.valueOf(a).length());
流子 2008-07-26
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 bao110908 的回复:]
DecimalFormat 和 JDK 5 新增的 Formatter 都可以做到,DecimalFormat 上面已经说了很多了,我就不说了

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


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



%d 表示格式化的参数是整数类型(byte, short, int, long 或者是 BigInteger)
08 表示格式化后总共占据 8 个字符的位置,原数值不满 8 位的在前面添加“0”。
如果是:%8d 表示格式化后总共占…
[/Quote]
请问Formatter 如何格式化16进制的数?比如A34CE,要格式化为0000A34CE,DFA0格式化为00000DFA0
sunzhyng 2008-07-25
  • 打赏
  • 举报
回复
java.text的包下面有格式化的类:

DecimalFormat myformat = new DecimalFormat();
myformat.applyPattern("00000000");



如果是输出才能用:
System.out.printf("%7d",num);
kill219111 2008-07-25
  • 打赏
  • 举报
回复
System.out.printf("%7d",num);
newb_f 2008-07-25
  • 打赏
  • 举报
回复
长见识
hiker_1 2008-07-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hmsuccess 的回复:]
很简单一个例子

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));
}
}
[/Quote]
hujing101 2008-07-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hmsuccess 的回复:]
很简单一个例子


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));
}
}

[/Quote]
zou_wei_forever 2008-07-25
  • 打赏
  • 举报
回复
mark
ZangXT 2008-07-25
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 jiangguilong2000 的回复:]
但如果是16进制的话,用这方法就难处理了。比如要生成00000A6E
[/Quote]
16进制可以用Integer.toHexString(int i)方法
流子 2008-07-25
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 xunyiren 的回复:]
引用 10 楼 hmsuccess 的回复:
很简单一个例子

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));
}
}


10楼正解!
[/Quote]
但如果是16进制的话,用这方法就难处理了。比如要生成00000A6E
加载更多回复(20)

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧