3 回答
TA贡献1780条经验 获得超3个赞
您接受phrase.indexOf('S')
一个字符串而不检查返回值。如果没有匹配,该方法返回-1
。然后,您使用该索引作为子字符串的上限,这会导致程序崩溃。
如果我正确理解你想要做什么,即使你得到了正确的算法,你也会想要一个不同的算法。没有理由既在字符串中搜索所需字符的每次出现,又编写一个将长度减 1 的循环。此外,如果可能,请避免复制长数组和字符串。
TA贡献1803条经验 获得超3个赞
我不确定这是否是正确的方法。但是,我发现添加 if 语句实际上修复了此代码,并在索引变为 -1 时停止 for 循环
String key;
String store;
key = phrase.substring(0,1).toUpperCase();
phrase = key + phrase.substring(1,phrase.length());
for(int i = phrase.length(); i>0; i--) {
int sKey = phrase.indexOf('S');
if(sKey >= 0) {
store = "$" + phrase.substring(sKey+1,phrase.length());
phrase =phrase.substring(0,sKey)+store;
}else {
i=0;
}
}```
添加回答
举报