给出一个字符串,字符串中间是否出现“ xyz”?为了定义中间,我们将说“ xyz”左右两边的字符数最多相差一个。
这是我要进行的练习:
public boolean xyzMiddle(String str) {
int indexXYZ = str.indexOf("xyz");
int toLeft = indexXYZ;
int toRight = str.length() - (indexXYZ + 3);
int val = toRight - toLeft;
if(Math.abs(val) <= 1))
return true;
else return false;
}
我不确定为什么,但是我不断收到一条编译错误消息,内容为“缺少'}'或表达式的非法开头”,但我认为我没有丢失任何内容。有人可以帮我找出我的错误吗?
答案 0 :(得分:0)
public boolean xyzMiddle(String str) {
int indexXYZ = str.indexOf("xyz");
int toLeft = indexXYZ;
int toRight = str.length() - (indexXYZ + 3);
int val = toRight - toLeft;
if(Math.abs(val) <= 1)
return true;
else
return false;
}
您在if部分中有结构性错误
答案 1 :(得分:0)
只需删除关键字else
即可摆脱编译错误。原因是,您需要返回一个boolean
值,该值由于在代码中使用else
而受到限制。顺便说一句,你的逻辑是正确的。下面给出的是更正的代码和示例测试:
public class Main {
public static void main(String args[]) {
System.out.println(xyzMiddle("abcxyzdef"));
System.out.println(xyzMiddle("abcdxyzefg"));
System.out.println(xyzMiddle("abcxyzdefg"));
System.out.println(xyzMiddle("abcdexyzfgh"));
System.out.println(xyzMiddle("abcxyzdefgh"));
}
public static boolean xyzMiddle(String str) {
int indexXYZ = str.indexOf("xyz");
int toLeft = indexXYZ;
int toRight = str.length() - (indexXYZ + 3);
int val = toRight - toLeft;
if (Math.abs(val) <= 1)
return true;
return false;
}
}
输出:
true
true
true
false
false
如果要保留else
,可以编写如下函数:
public static boolean xyzMiddle(String str) {
boolean result;
int indexXYZ = str.indexOf("xyz");
int toLeft = indexXYZ;
int toRight = str.length() - (indexXYZ + 3);
int val = toRight - toLeft;
if (Math.abs(val) <= 1)
result = true;
else
result = false;
return result;
}