返回方法无法解析为变量

时间:2014-03-04 19:35:23

标签: java string variables intervals

我已经编写了一些代码,用于检查具有x和y值的2个区间,并检查它们是否重叠,并且我在回复toString时遇到了问题方法:

public String toString() {
    if (isEmpty()) {
        String result = String.format("Interval: (EMPTY)");
    } else {
        String result = String.format("Interval: [%s, %s]", Double.toString(left),
                Double.toString(right));
    }
    return result;
}

}

我收到错误"结果无法解析为变量"并且我不确定为什么,因为if函数以任何一种方式返回一个字符串,这就是字符串的返回类型所期望的,所以我真的很困惑,不知道我是不是我只是错过了一些愚蠢的东西。

2 个答案:

答案 0 :(得分:4)

您在if语句或else块的范围内声明结果。一旦代码退出这些块,结果变量就不再在范围内了。

要修复它,只需在正确的范围内声明您的变量:

public String toString() {

    String result;

    if (isEmpty()) {
        result = String.format("Interval: (EMPTY)");
    } else {
        result = String.format("Interval: [%s, %s]", Double.toString(left),
                Double.toString(right));
    }
    return result;
}

或者只使用内联的return语句:

public String toString() {

    if (isEmpty()) {
        return String.format("Interval: (EMPTY)");
    } else {
        return String.format("Interval: [%s, %s]", Double.toString(left),
                Double.toString(right));
    }

}

答案 1 :(得分:1)

这是范围问题。 result变量仅在if语句中声明,也就是说,仅在isEmpty()返回true时才声明它。要解决这个问题,请在if-else块上面声明变量,如下所示:

public String toString() {
    String result;
    if (isEmpty()) {
        result = String.format("Interval: (EMPTY)");
    } else {
        result = String.format("Interval: [%s, %s]", Double.toString(left),
        Double.toString(right));
    }

    return result;
}