3 回答

TA貢獻1780條經驗 獲得超4個贊
您接受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;
}
}```
添加回答
舉報