【问题标题】:Return in if statement causing unreachable code error在 if 语句中返回导致无法访问的代码错误
【发布时间】:2012-11-02 11:26:09
【问题描述】:

以下代码:

public static void print(ListNode p)
{
    System.out.print("[");
    if(p==null);
    {
        System.out.println("]");
        return;
    }
    ListNode k = p.getNext();
    //more code
}

导致以下编译错误:

 ----jGRASP exec: javac -g Josephus_5_Rajolu.java

Josephus_5_Rajolu.java:53: error: unreachable statement
            ListNode k = p.getNext();
                     ^
1 error

 ----jGRASP wedge2: exit code for process is 1.
 ----jGRASP: operation complete.

为什么会这样? 我只在 p = null 时返回。如果 p!=null,我想做我的其他代码。为什么无法访问?

【问题讨论】:

  • 要学习的经验:(1) 编写与您想象的不同的代码很容易,(2) 您的编码风格可以帮助您的代码更简洁。例如,如果您将花括号直接放在 if 语句的右侧,您可以减少插入不正确分号的机会。
  • 感谢您的提示。我已经多次看到 if 语句旁边的花括号并且我尝试过使用它,但是因为我习惯了这种编码风格,所以当我尝试这样做时感觉很尴尬。第 1 课非常正确。

标签: java if-statement compiler-errors return unreachable-statement


【解决方案1】:

if 语句后面有一个分号。

【讨论】:

  • 哦!我没听懂。谢谢!它说我无法在 13 分钟内标记正确答案。我会在 13 分钟后完成。非常感谢!
  • 不客气。有时只需要第二双眼睛。
【解决方案2】:

有;在 if 语句删除它之后它将起作用:)

【讨论】:

    【解决方案3】:

    if(p==null);

    【讨论】:

      【解决方案4】:

      也许是';'在:
      if(p==null);

      【讨论】:

        【解决方案5】:

        去掉 if 后面的分号

        【讨论】:

          【解决方案6】:

          你在哪里实例化 ListNode K?

          在我看来问题是 ListNode k 没有被实例化。

          我认为你需要这样的东西。 ListNode k = new ListNode();

          你是在课堂上创建这个吗?

          你还有一个 ;如果(p==null)之后;这需要删除。

          【讨论】:

          • 这不是问题。我只是将参考点指向 p.getNext()。分号是问题所在。谢谢!
          • 我知道分号是问题,但我没有看到实例化,有时这可能是个大问题。
          • 实例化就在那里。在\\more code 正上方的行中显示ListNode k = p.getNext();
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-02
          • 2014-02-01
          • 1970-01-01
          • 2018-03-02
          • 1970-01-01
          相关资源
          最近更新 更多