在 if 语句中返回导致无法访问的代码错误

Posted

技术标签:

【中文标题】在 if 语句中返回导致无法访问的代码错误【英文标题】:Return in if statement causing unreachable code error 【发布时间】: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 课非常正确。 【参考方案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();

以上是关于在 if 语句中返回导致无法访问的代码错误的主要内容,如果未能解决你的问题,请参考以下文章

我的简单 if-else 语句无法访问代码如何?

如何在 C# 中使用 If DEBUG 语句而没有 IDE 认为代码无法访问?

为啥我在 Java 中出现无法访问的语句错误?

条件后无法访问的语句[关闭]

Java错误:创建新的链表节点时无法访问语句[关闭]

为啥 Java 会出现“无法访问的语句”编译器错误?