3 回答

TA貢獻(xiàn)1780條經(jīng)驗 獲得超4個贊
您接受phrase.indexOf('S')
一個字符串而不檢查返回值。如果沒有匹配,該方法返回-1
。然后,您使用該索引作為子字符串的上限,這會導(dǎo)致程序崩潰。
如果我正確理解你想要做什么,即使你得到了正確的算法,你也會想要一個不同的算法。沒有理由既在字符串中搜索所需字符的每次出現(xiàn),又編寫一個將長度減 1 的循環(huán)。此外,如果可能,請避免復(fù)制長數(shù)組和字符串。

TA貢獻(xiàn)1803條經(jīng)驗 獲得超3個贊
我不確定這是否是正確的方法。但是,我發(fā)現(xiàn)添加 if 語句實際上修復(fù)了此代碼,并在索引變?yōu)?-1 時停止 for 循環(huán)
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;
}
}```
添加回答
舉報