Java错误:创建新的链表节点时无法访问语句[关闭]
Posted
技术标签:
【中文标题】Java错误:创建新的链表节点时无法访问语句[关闭]【英文标题】:Java error: unreachable statement when create new linked list node [closed] 【发布时间】: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);
感谢您的回复。
【问题讨论】:
表示你的程序无论如何都会在该语句之前终止 正如错误所述,该行代码(以及随后的所有内容)无法访问。并且,因此,是不必要的。您希望在什么逻辑条件下达到该行代码? 【参考方案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 条件。
【讨论】:
以上是关于Java错误:创建新的链表节点时无法访问语句[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。