【发布时间】:2019-05-05 03:36:21
【问题描述】:
public static String produceAnswer(String y) {
int space1Location = y.indexOf(" ");
String value1 = y.substring(0, space1Location - 1);
String value2 = y.substring(space1Location + 3);
String operator = y.substring(space1Location + 1, space1Location + 2);
int underLocation = value2.indexOf("_");
int slashLocation = value2.indexOf("/");
String wholeNum;
String numerator;
String denominator;
if(underLocation != -1) {
wholeNum = value2.substring(0, underLocation);
numerator = value2.substring(underLocation + 1, slashLocation);
denominator = value2.substring(slashLocation + 1);
}
else if(underLocation == -1 && slashLocation != -1) {
numerator = value2.substring(0, slashLocation);
denominator = value2.substring(slashLocation + 1);
wholeNum = "0";
}
else if(underLocation == -1 && slashLocation == -1) {
wholeNum = value2;
numerator = "0";
denominator = "1";
}
return "whole:" + wholeNum + " numerator:" + numerator + " denominator:" + denominator;
}
我的代码中的 return 语句由于某种原因不起作用。它说变量尚未初始化,这对我来说没有意义,因为我肯定在 if 语句中初始化了它们,对吗?这里有什么问题?
【问题讨论】:
-
哪些变量没有被初始化?你能说得更具体些吗
-
如果没有,如果条件评估为真呢?
-
变量 'wholeNum'、'numerator' 和 'denominator' 显然都没有被初始化。
-
阅读 JLS 关于可达性和明确分配的章节。 :)
-
编译器应该如何知道
if条件之一始终为真,如果是这样,为什么要对最后一个else if进行测试?
标签: java compiler-errors return