int i,j,p;
char dw[]={'1','2','3'};
StringBuffer dx=new StringBuffer("ldjkfhsjkf.as");
for(i=0;i<dx.length();i++)
{
if(dx.charAt(i)=='.')
{
p=i;
}
}
System.out.println("dx.length()="+dx.length());
for(i=p+1,j=0;i<dx.length();i++,j++)
{
System.out.print("i="+i+"j="+j);
System.out.print(dx.charAt(i));
System.out.println(dw[j]);
//dx.insert(i,dw[j]); 这句是想把'1','2'插到'.'后面的a和s后面,可是加了这句就下标越界,搞不懂!
}
[此贴子已经被作者于2007-6-5 13:36:30编辑过]
----------------解决方案--------------------------------------------------------
同志们帮忙试一下嘛- -
----------------解决方案--------------------------------------------------------
int i,j,p;
char dw[]={'1','2','3'};
StringBuffer dx=new StringBuffer("ldjkfhsjkf.as");
for(i=0;i<dx.length();i++)
{
if(dx.charAt(i)=='.')
{
p=i;
}
}
System.out.println("dx.length()="+dx.length());
for(i=p+1,j=0;i<dx.length();i++,j++)
{
System.out.print("i="+i+"j="+j);
System.out.print(dx.charAt(i));
System.out.println(dw[j]);
//dx.insert(i,dw[j]); 这句是想把'1','2'插到'.'后面的a和s后面,可是加了这句就下标越界,搞不懂!
StringBuffer的insert(int i,char[] str)方法是把str字符数组元素插入i指定的字符串中,故插入以后出现StringBuffer.length变长了.导到dw数组越界的?
}
----------------解决方案--------------------------------------------------------
dx.length()=13
i=11j=0a1
i=12j=1a2
i=13j=2a3
i=14j=3aException in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at aa.test.main(test.java:24)
这是eclipse的错误提示
i=11j=0a1
i=12j=1a2
这2条是对的
为什么它会继续往下做呢,郁闷
----------------解决方案--------------------------------------------------------
如果在加个条件就对了for(i=p+1,j=0;i<dx.length()&&j<dx.length()-p;i++,j++)
好怪!!
----------------解决方案--------------------------------------------------------
不错啊,因为第一次循环,i=11,j=0,后面用dx.insert()后,dx字符串加了d[0]即为:ldjkfhsjkf.1asfor,看到没,a前面多了个1,现在长度就是14了,后面也这样……(i=p+1,j=0;i<dx.length()&&j<dx.length()-p;i++,j++)就限制了循环下去数组越界!
----------------解决方案--------------------------------------------------------
谢谢,不过这样改好后还是达不到,预期效果
for(i=p+2,j=0;i<dx.length()&&j<2;i++,j++)
{
// System.out.print("i="+i+"j="+j);
// System.out.print(dx.charAt(i));
dx.insert(i,dw[j]); // 这句是想把'1','2'插到'.'后面的a和s后面,可是加了这句就下标越界,搞不懂!
}
System.out.println(dx);
结果:dx.length()=13
ldjkfhsjkf.a12s
而不是ldjkfhsjkf.a1s2
----------------解决方案--------------------------------------------------------
再想想~~
...
public static void main(String[] args) {
int i,j;
int p=0;
char dw[]={'1','2','3'};
int lenr,lenh=0;
StringBuffer dx=new StringBuffer("kf.asf");
lenr=dx.length();
for(i=0;i<lenr;i++)
{
if(dx.charAt(i)=='.')
{
p=i;
lenh=lenr-p-1;
}
}
dx.append(" ");
System.out.println("dx.length()="+dx.length());
for(i=p+2,j=0;i<dx.length()&&j<lenh;i+=2,j++)
{
dx.insert(i,dw[j]);
}
System.out.println(dx);
}
结果:kf.a1s2f3
搞定啦,谢谢大家
[此贴子已经被作者于2007-6-5 15:39:20编辑过]
----------------解决方案--------------------------------------------------------
再次感谢zhufeifei,,MUA~~
----------------解决方案--------------------------------------------------------
如果想在as后面直接加1,2的话,直接用StringBuffer.append(String str)就行了!呵呵,不知道你想要什么结果?
----------------解决方案--------------------------------------------------------