作者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
推 PsMonkey:純粹 logic error,請自己加油吧... 12/16 22:47
→ appleoxxo:因為我想法錯了所以超出範圍了嗎? 12/16 22:50
推 TonyQ:應該說 a 跟 sb 的索引值基準在刪除後已經不一樣了 12/17 13:11
推 luoqr:比較好奇為什麼要用for回圈? 12/17 17:31