亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

不返回預期的串聯字符串

不返回預期的串聯字符串

素胚勾勒不出你 2022-09-28 09:58:01
我改進了來自編碼蝙蝠的啟動Oz任務的解決方案。我從上一個中找到了更好的解決方案,當我測試它時,我在一個測試用例中得到了一個意想不到的解決方案。public String startOz(String str) {   String result = (str.indexOf('o') == 0 ? "o" : "").concat(str.indexOf('z') == 1 ? "z" : "");   return result;  }// test case:String str = "zzzz";System.out.println("test=" + startOz(str));我不明白為什么當我期望得到test=z時,我得到空字符串的結果
查看完整描述

4 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

str.indexOf('z') == 1返回 false,因為 indexOf “返回指定字符首次出現的此字符串中的索引”。在你的例子中, 是 零,因為零是第一次出現。str.indexOf('z')

此方法有一個版本,它采用一個附加參數來定義從哪個索引開始,因此您可以使用以下內容來檢查 Z 是否是第二個字符:

str.indexOf('z', 1) == 1

也就是說,解決這個問題的更好方法可能是使用charAt

if (str.charAt(0) == 'o') //...
if (str.charAt(1) == 'z') //...


查看完整回答
反對 回復 2022-09-28
?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

因為字符串索引從 0 開始

str.indexOf('z') == 1 is false
str.indexOf('z') == 0 is true


查看完整回答
反對 回復 2022-09-28
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

測試中沒有字符,因此將空與空連接起來,因為字符的第一個索引為 0。 返回第一個匹配的索引,因此它是 0,而不是 1。'o'StringStringString'z'indexOf



查看完整回答
反對 回復 2022-09-28
?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

它返回空字符串的原因是,因為 indexOf 條件的結果是空字符串。

"zzzz"

此部分返回到空字符串,因為沒有“o”字符

(str.indexOf('o') == 0 ? "o" : "") //Equals to ""

然后這也返回空,因為“z”是索引0。

(str.indexOf('z') == 1 ? "z" : "") //Equals to ""

indexOf 返回第一個字符匹配的索引號,因此“z”的索引為 0。你有它。


查看完整回答
反對 回復 2022-09-28
  • 4 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號