当前位置: 首页 > 知识库问答 >
问题:

Java编译器错误:缺少返回语句

盖辉
2023-03-14

所以我得到了一个编译器错误,我丢失了一个返回语句,我已经研究了其他类似的问题,但我仍然对这个问题感到困惑。

public String pop()
{
  try
  {
    if(top == -1)
    {
      throw new EmptyStackException("The stack is empty!");
    }
    String x = stack[top];
    top--;
    return x;
  }
  catch (EmptyStackException e)
  {
    System.out.println("The stack is empty!");
  }
}

如果之前有人问过这个问题,我会提前道歉,但我已经看过了其他各种问题,我似乎无法弄清楚这一点。

共有2个答案

云洋
2023-03-14

你的问题全在于范围界定

当函数运行时,它会经历两种情况

  1. 如果一切顺利,哪一个会被tr阻塞,所以它会返回字符串

你的问题在条件二:

如何解决:

只需返回一个空字符串来表示出了问题。

陆飞龙
2023-03-14

如果异常被捕获,pop的返回值是多少?此执行路径中没有返回语句。这就是编译器抱怨的原因。

在这种情况下,pop的调用方需要处理。不要在pop方法中捕获emptyStackExc0019。如果您将其定义为检查异常,则需要声明它抛出的。如果您没有抓住它,那么方法将始终返回值或抛出异常,这将使编译器满意。

请注意,可以在cat块之后返回值。这也将满足编译器,但是您会返回什么?空?然后调用方必须测试null,但是调用方也可以捕获

 类似资料:
  • 下面的Java不工作,因为它缺少一个return语句。我搞不懂怎么了。有什么想法吗? 即使我去掉字符串u,它也会给出相同的错误,如果我添加int usernameLimit,它也会给出相同的错误。

  • 我正在运行这段java代码,遇到一个错误“缺少返回语句”,请帮助。我在windows中使用cmd运行。

  • 问题内容: 在以下方法中,即使通过该方法只有一条路径,并且编译器包含一条语句,编译器也会抱怨 缺少return语句。抑制该错误需要另一条语句。 鉴于Java编译器可以识别无限循环,为什么它也不能处理这种情况?链接的问题提示,但不提供此特定情况的详细信息。 问题答案: JLS14.21,“无法到达的语句”是处理此问题的部分: if语句(是否具有else部分)以异常方式处理。因此,本节末尾将单独讨论。

  • 问题内容: 好了,我正在尝试编写这段代码,但是我一直收到这个愚蠢的错误。我不知道我在做什么错,所以也许你们中的一位专家可以帮助我。 } 问题答案: 在方法if 中,该方法不返回任何值。如果相同 应该是这样的:

  • } 当我运行这段代码时,我得到以下错误: 我该怎么做来解决这个问题呢? 见下面的条件:给定一个从1到4(含)的数字,返回该数字的一个单词表示。例如,给定2,返回2。如果数字大于4,则返回短语“太大”。如果数字小于1,则返回短语too small。