看板 java 關於我們 聯絡資訊
寫了一個方法 它的作用是 將一個字串索引位置為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