我有以下方法:
public int getValue()
{
if (currentState == COUNTING)
{
for (int i = 0; i < 99; i++)
{
value = i;
return value;
}
}
else
return super.getValue();
}
我收到以下错误:缺少return语句。
该方法的目的是,如果状态是计数状态,则值应从0增加到99,并在每次递增后返回值。如果状态不是计数状态,则应使用超类中的getValue方法。
答案 0 :(得分:6)
你得到错误,因为有一个案例“理论上”你可能不会返回任何东西:
if (currentState == COUNTING)
{
for (int i = 0; i < 99; i++)
{
value = i;
return value;
}
// right here
}
现在,我(和你)很清楚你不会到达那里,但不会到达编译器。
除此之外,循环内部的返回没有任何意义,因为当i
为零时,你将输入一次,并返回它,但这是另一个我无法帮助的故事,因为我不清楚这个功能的目的是什么。
答案 1 :(得分:3)
如果您输入if
但从不输入for
循环怎么办?不会有回报。
您必须在方法末尾添加一个返回值,例如返回 failure 值。
答案 2 :(得分:1)
编译器无法知道i<99
条件是否为真或无。如果不是,如果currentState == COUNTING
方法不会返回任何内容。这就是你收到错误的原因。但无论如何,当你可以返回0时,为什么需要for
循环?实际上,如果currentState
等于COUNTING
,您的方法将在第一次迭代中返回0。