3 回答

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

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