我有个消息报文,格式为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里如何让一个变量为固定长度呢?谢谢
{
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里如何让一个变量为固定长度呢?谢谢
String temps = "1111";
a = temps + a.substring(temps.length+1);
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);