java - java不返回预期的连接字符串

  显示原文与译文双语对照的内容

我从CodingBat改进了 startOz 任务的解决方案。 在前一个测试中,我发现了更好的解决方案,当我测试它时,。


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时得到空字符串

时间:

str.indexOf('z') == 1 返回 false,因为 indexOf"返回该字符串的索引,该字符串在指定字符的第一次出现的"。 如果是零,str.indexOf('z') 是零,因为零是第一次出现。

这里有一个版本为的方法,它定义了起始参数,因此你可以使用下面的代码检查是否是第二个字符:


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



也就是说,更好的解决这个问题的方法可能是使用 charAt:


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


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



...