缺少return语句方法

时间:2012-02-23 18:43:07

标签: java methods return-type

我有以下方法:

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方法。

3 个答案:

答案 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。