作者appleoxxo (BB)
看板java
标题[问题] 有关删除StringBuffer里面的字元的问题!!
时间Tue Dec 16 22:03:55 2008
写了一个方法 它的作用是
将一个字串索引位置为n的字元若有重复出现 删除重复出现的字元
程式码如下
public static StringBuffer common1(String a,int n)
{
StringBuffer sb= new StringBuffer(a);
for(int i =0;i<a.length();i++)
{
if(a.charAt(n)==a.charAt(i)&&n!=i)
{
sb.deleteCharAt(i);
}
}
return sb;
}
------------------------------------
a是欲删除字元的字串
n是欲删除重复的字元索引位置
sb是欲回传之字串
到main方法里面我再把它转成String
但是这样run却有问题
当输入字串为AA索引位置n=0时 会回传A (正确)
但当输入为 AAA 索引位置n=0时 会出现错误讯息如下
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String
index out of range: 2
at java.lang.AbstractStringBuilder.deleteCharAt(Unknown Source)
at java.lang.StringBuffer.deleteCharAt(Unknown Source)
at bbbaaa.deleteCommon(bbbaaa.java:19)
at bbbaaa.main(bbbaaa.java:6)
我认为是超出StringBuffer的范围了
但我的设定哪里错误了呢?
新手发问 多多指教
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.182.81
1F:推 PsMonkey:纯粹 logic error,请自己加油吧... 12/16 22:47
2F:→ appleoxxo:因为我想法错了所以超出范围了吗? 12/16 22:50
3F:推 TonyQ:应该说 a 跟 sb 的索引值基准在删除後已经不一样了 12/17 13:11
4F:推 luoqr:比较好奇为什麽要用for回圈? 12/17 17:31