我有个消息报文,格式为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里如何让一个变量为固定长度呢?谢谢

解决方案 »

  1.   

    String a = "00000000000000000000000000"; //(固定长度个0)
    String temps = "1111";
    a = temps + a.substring(temps.length+1);
      

  2.   

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