我正在编写关于编码包的基本java问题,而在某个问题上,我的代码未通过"其他测试"。问题是xyzThere,任务是这样的: 如果给定的字符串包含" xyz"的外观,则返回true。其中xyz不是直接在句点(。)之前。所以" xxyz"算了但是" x.xyz"才不是。 这是我的代码:
public boolean xyzThere(String str) {
boolean hi = false,hi2 = false;
for(int i = 0;i<str.length()-2;i++){
if(i==0)
hi = (i==0&&str.substring(0,3).equals("xyz"));
else hi2 = (str.substring(i,i+3).equals("xyz")&&str.charAt(i-1)!='.');
}
return hi||hi2;
}
为什么这些测试失败了?
编辑:修改了我的解决方案,因此变量的值不会重置,仍然会导致错误
public boolean xyzThere(String str) {
for(int i = 0;i<str.length()-2;i++){
if(i==0&&str.substring(0,3).equals("xyz"))
return true;
else if(str.substring(i,i+3).equals("xyz")&&str.charAt(i-1)!='.');
return true;
}
return false;
}
它为xyzThere(&#34; abc.xyz&#34;),xyzThere(&#34; abcxy&#34;),xyzThere(&#34; .xyz&#34;)返回true,和xyzThere(&#34; 12.xyz&#34;)。