[問題] 有關刪除StringBuffer裡面的字元的問題!!

看板java作者 (BB)時間17年前 (2008/12/16 22:03), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串1/2 (看更多)
寫了一個方法 它的作用是 將一個字串索引位置為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

12/16 22:47, , 1F
純粹 logic error,請自己加油吧...
12/16 22:47, 1F

12/16 22:50, , 2F
因為我想法錯了所以超出範圍了嗎?
12/16 22:50, 2F

12/17 13:11, , 3F
應該說 a 跟 sb 的索引值基準在刪除後已經不一樣了
12/17 13:11, 3F

12/17 17:31, , 4F
比較好奇為什麼要用for回圈?
12/17 17:31, 4F
文章代碼(AID): #19HxLCZG (java)
文章代碼(AID): #19HxLCZG (java)