java - 无法访问的语句帮助(链表)

Posted

技术标签:

【中文标题】java - 无法访问的语句帮助(链表)【英文标题】:java - unreachable statement help (linked lists) 【发布时间】:2020-02-09 12:21:47 【问题描述】:

所以我试图为我的单链表类实现一个 get 方法,但我得到了错误:unreachable statement。我想知道如何解决这个问题?

public T get(int i) 
    // TODO: Implement this
    Node u = head;
    for(int j = 0; j < i; j++)
        u = u.next;
    
    return u.x; 
    if (i < 0 || i > n - 1) throw new IndexOutOfBoundsException();
    return null;

【问题讨论】:

return u.x 之后的行无法访问,因为任何紧跟在return 之后的代码都不会运行。 你能用你自己的话解释一下return是做什么的吗? 它返回一个值来表示函数 那是正确的,那么当你说“返回那个”时,一个方法应该如何表现,但仍然期望它继续做其他事情,尽管它应该返回一些东西? Why does Java have an "unreachable statement" compiler error?的可能重复 【参考方案1】:

return u.x 之后的行无法访问。一旦返回值或抛出异常,程序就会退出该方法。

当然,您仍然可以使用if 语句控制发生的情况:

public T get(int i) 
    if (i < 0 || i > n - 1)
        throw new IndexOutOfBoundsException();
    // TODO: Implement this
    Node u = head;
    for (int j = 0; j < i; j++)
        u = u.next;
    return u.x;

如果if 语句的条件不成立,程序将跳过它并返回u.x

有关从方法返回值的更多信息,请参阅this tutorial。

【讨论】:

【参考方案2】:

试试这个:

public T get(int i)
    if (i < 0 || i > n - 1) 
        throw new IndexOutOfBoundsException();
     else 
        Node u = head;
        for(int j = 0; j < i; j++)
            u = u.next;
        
        return u.x; 
    

基本上,我们所做的只是将方法的主要逻辑移到验证逻辑中。如果i超出范围,则抛出异常并返回null,否则,执行您的逻辑并返回结果。

【讨论】:

好收获。懒惰的复制/粘贴。

以上是关于java - 无法访问的语句帮助(链表)的主要内容,如果未能解决你的问题,请参考以下文章

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

为啥 Java 编译器不会为无法访问的 then 语句生成无法访问的语句错误?

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

如果条件 Java,则无法访问语句

编译错误 - 无法访问的语句

finally 块后无法访问的语句