能够固定String类型变量的长度吗?

BlackSnail 2005-06-08 09:40:57
我有个消息报文,格式为ABCD,每个字段长度为固定值,例如字段A长度为10,字段B长度为20,字段C长度为30,字段D长度为40,总长度100。构造这个消息报文代码如下:

public class strtest
{
public static void main(String[] args)
{
String a="a1111";
String b="b2222222";
String c="c3333333333333";
String d="d444444444444444444444";

StringBuffer info=new StringBuffer(100);
//info.insert(0,"00000000000000000000000000000000000");
info.insert(0,a);
info.insert(10,b);
info.insert(30,c);
info.insert(60,d);

System.out.println(info);
}
}
运行结果为:
D:\>java strtest
Exception in thread "main" java.lang.StringIndexOutOfBoundsException
at java.lang.StringBuffer.insert(StringBuffer.java:874)
at strtest.main(strtest.java:12)

如果把那句屏蔽的info.insert(0,"00000000000000000000000000000000000");去掉屏蔽,
则运行结果为:
D:\>java strtest
a111100000b2222222000000000000c33333333333330000000000000000d44444444444444444444400

看来原因是由于每个字段变量String的实际长度小于字段长度造成的。那么JAVA里如何让一个变量为固定长度呢?

谢谢
...全文
246 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lubber 2005-06-09
  • 打赏
  • 举报
回复
CharBuffer info = CharBuffer.allocate(100);
info.put(a);
info.position(10);
info.put(b);
info.position(30);
info.put(c);
info.position(60);
info.put(d);
info.flip();

System.out.println(info);
midthinker 2005-06-09
  • 打赏
  • 举报
回复
可以使用char array吗

@.@||~
jihanzhong 2005-06-08
  • 打赏
  • 举报
回复
只能用程序控制
usherlight 2005-06-08
  • 打赏
  • 举报
回复
String a = "00000000000000000000000000"; //(固定长度个0)
String temps = "1111";
a = temps + a.substring(temps.length+1);

62,634

社区成员

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

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