java - 不可达语句帮助(链表)

java - unreachable statement help (linked lists)

所以我正在尝试为我的单向链表实现一个 get 方法 class,但我得到了错误:无法访问的语句。我想知道如何解决这个问题?

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;
}

试试这个:

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 越界,则抛出异常并 return null,否则,执行您的逻辑并 return 结果。

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

当然,您仍然可以使用 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 语句的条件不为真,程序将跳过它并 return u.x 代替。

有关 return 从方法获取值的更多信息,请参阅 this tutorial