【发布时间】:2014-03-07 09:52:02
【问题描述】:
int 输入表示一个数字 k,该方法应将第 k 次出现的第一个 char 输入替换为第二个 char 输入。如果第一个字符至少没有出现 k 次,则不替换任何内容。
public class HW2{
public static String replaceKth(char a, char b, int k, String c){
StringBuilder builder = new StringBuilder();
int occ = 0;
for(int i = 0; i < c.length(); i = i + 1){
if (c.charAt(i) == a){
occ = occ + 1;
if(occ == k){
builder.setCharAt(i, b);
}
}
}
return builder.toString();
}
}
当我尝试测试时:
HW2.replaceKth(a, b, 3, "aabaa")
Static Error: Undefined name 'a'
是的,我定义了a,然后出现另一个错误
HW2.replaceKth('a', 'a', 3, "aabaa")
java.lang.StringIndexOutOfBoundsException: String index out of range: 3
at java.lang.AbstractStringBuilder.setCharAt(AbstractStringBuilder.java:347)
at java.lang.StringBuilder.setCharAt(StringBuilder.java:55)
at HW2.replaceKth(HW2.java:15)
>
【问题讨论】:
-
你先定义
a了吗? -
是的,你在调用者中声明了什么
a?或者你的意思是像HW2.replaceKth('a', 'b', 3, "aabaa")这样的事情?
标签: java stringbuilder