我已经编写了一些代码,用于检查具有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函数以任何一种方式返回一个字符串,这就是字符串的返回类型所期望的,所以我真的很困惑,不知道我是不是我只是错过了一些愚蠢的东西。
答案 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;
}