【问题标题】:Java error: unreachable statement when create new linked list node [closed]Java错误:创建新的链表节点时无法访问语句[关闭]
【发布时间】:2019-07-24 14:49:12
【问题描述】:

我编写了一个合并两个链表的程序,所以我首先创建了一个 dummyHead。但是编译器返回给我一个错误:unreachable statement。我在网上搜索了它,但仍然不明白为什么。

代码是:

/**
 * class ListNode {
 *   public int value;
 *   public ListNode next;
 *   public ListNode(int value) {
 *     this.value = value;
 *     next = null;
 *   }
 * }
 */
public class Solution {
  public ListNode merge(ListNode one, ListNode two) {
    if(one == null && two != null){
      return two;
    }else if(one != null && two == null){
      return one;
    }else{
      return null;
    }
    
    ListNode dummyHead = new ListNode(-1);
    ListNode cur_one = one;
    ListNode cur_two = two;
    ListNode dummyCur = dummyHead;
    while(cur_one.next == null || cur_two.next == null){
      if(cur_one.value <= cur_two.value){
        dummyCur.next = cur_one;
        cur_one = cur_one.next;
      }else{
        dummyCur.next = cur_two;
        cur_two = cur_two.next;
      }
      dummyCur = dummyCur.next;
    }
    
    if(cur_one.next != null){
      dummyCur.next = cur_one.next;
    }
    if(cur_two.next != null){
      dummyCur.next = cur_two.next;
    }
    
    return dummyHead.next;
  }
}

错误信息是:

error:java.io.IOException: /Solution.java:21: error: unreachable statement

ListNode dummyHead = new ListNode(-1);

感谢您的回复。

【问题讨论】:

  • 表示你的程序无论如何都会在该语句之前终止
  • 正如错误所述,该行代码(以及随后的所有内容)无法访问。并且,因此,是不必要的。您希望在什么逻辑条件下达到该行代码?

标签: java linked-list unreachable-code unreachable-statement


【解决方案1】:

由于您的 if/else if/else 条件,该行永远不会执行:

if(one == null && two != null){
  return two;
} else if(one != null && two == null){
  return one;
} else{
  return null;
}

基于此条件,在执行第 21 行之前返回 2、1 或 null。

您需要删除 else 以允许该方法继续执行。

【讨论】:

    【解决方案2】:

    在您的第一个 if 语句中,由于最后一个 else 块,您在所有可能的情况下都会提前退出该方法。这就是为什么以下语句都不会被执行的原因。

    【讨论】:

      【解决方案3】:

      else { return null; } 最后一个 else 条件在该行之前返回 null。如果您希望使用其余功能,请删除最后一个 else 条件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多