xyzMiddle-我认为我没有丢失任何东西,那么这个错误是什么意思呢?

时间:2019-12-16 15:43:34

标签: java string compiler-errors boolean

  

给出一个字符串,字符串中间是否出现“ 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;
}

我不确定为什么,但是我不断收到一条编译错误消息,内容为“缺少'}'或表达式的非法开头”,但我认为我没有丢失任何内容。有人可以帮我找出我的错误吗?

2 个答案:

答案 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;
}