Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用while循环重新编写这个java方法?_Java_Loops_While Loop - Fatal编程技术网

如何用while循环重新编写这个java方法?

如何用while循环重新编写这个java方法?,java,loops,while-loop,Java,Loops,While Loop,它应该从伪LinkedList中取出最后一个元素。说明建议使用while循环查找下一个到最后一个元素 public String removeFromEnd() { String removed = null; if (head == null) { return removed; } else if (head.getNext() == null) { removed = head.getName(); head = nu

它应该从伪LinkedList中取出最后一个元素。说明建议使用while循环查找下一个到最后一个元素

public String removeFromEnd() {
    String removed = null;
    if (head == null) {
        return removed;
    } else if (head.getNext() == null) {
        removed = head.getName();
        head = null;
    } else if (head.getNext().getNext() == null) {
        removed = head.getNext().getName();
        head.setNext(null);
    }
    return removed;
}
过去的尝试通常与此类似:

public String removeFromEnd() {
    String removed = null;
    while (head.getNext().getNext() == null){
        removed = head.getNext().getName();
        head.setNext(null);
    }
    if (head.getNext() == null){
        removed = head.getName();
                    head = null;
    }
    return removed;
}

在您的尝试代码中

while (head.getNext().getNext() == null){
    removed = head.getNext().getName();
    head.setNext(null);
}

只有当
head
已经是倒数第二个元素时,才能进入此循环。您希望循环,直到
head
是倒数第二个元素。这有帮助吗?

在您的尝试代码中

while (head.getNext().getNext() == null){
    removed = head.getNext().getName();
    head.setNext(null);
}
  Node node = head;
  Node prev = null;
  while (node != null && node.getNext() != null) {
      prev = node;
      node = node.getNext();
  }


只有当
head
已经是倒数第二个元素时,才能进入此循环。您希望循环,直到
head
是倒数第二个元素。这有帮助吗?

有很多不同的东西。我似乎总是得到空指针异常或返回错误的值。我的方法通常有这样一个while循环:while(head.getNext().getNext()==null){…}但我似乎总是忽略至少一个案例。请将您尝试的解决方案放在问题中,而不是注释中。任何人都不能将多行代码作为注释来读取。@LouisWasserman:Chuck Norris可以将多行代码作为注释来读取。获取对第一个元素的引用,检查下一个元素是否为null,如果不为空,则设置对下一个元素的引用,并在while循环中执行此操作。。。不要使用getNext()。我似乎总是得到空指针异常或返回错误的值。我的方法通常有这样一个while循环:while(head.getNext().getNext()==null){…}但我似乎总是忽略至少一个案例。请将您尝试的解决方案放在问题中,而不是注释中。任何人都不能将多行代码作为注释来读取。@LouisWasserman:Chuck Norris可以将多行代码作为注释来读取。获取对第一个元素的引用,检查下一个元素是否为null,如果不为空,则设置对下一个元素的引用,并在while循环中执行此操作。。。不要使用GETNEXT().GETNEXT()构造,因为您甚至没有检查GETNEXT()是否使其更可读,您可能会考虑移除其他,因为如果头= = null感谢提姆,代码将返回。这应该是解决这个问题的最好办法。如果我的数学是正确的,这应该需要O(n)个时间来完成,其他的事情几乎都是持续的工作。哦,removeNode的调用是什么?该方法不存在(没有它也可以工作)。当我尝试设置下一个(null)时,这会给我一个null指针异常。为什么是的,我们不知道您的节点是什么数据结构,但这是如何从列表中实际删除最后一个元素的一个很好的猜测。如果您提供如何从列表中实际删除该项的信息,我们可以提供一个工作示例。但是现在你应该能够自己做了。为了使它更可读,你可以考虑移除其他,因为如果头= = null感谢提姆,代码会返回。这应该是解决这个问题的最好办法。如果我的数学是正确的,这应该需要O(n)个时间来完成,其他的事情几乎都是持续的工作。哦,removeNode的调用是什么?该方法不存在(没有它也可以工作)。当我尝试设置下一个(null)时,这会给我一个null指针异常。为什么是的,我们不知道您的节点是什么数据结构,但这是如何从列表中实际删除最后一个元素的一个很好的猜测。如果您提供如何从列表中实际删除该项的信息,我们可以提供一个工作示例。但是你现在应该可以自己做了。我想我一直在尝试使用while循环作为条件而不是实际的循环。谢谢,有点。我想我一直在尝试使用while循环作为条件而不是实际的循环。谢谢。尝试插入它,当它应该返回名称时返回null。所以我不确定它是不完整还是什么。是的,这只是一个循环,迭代到列表的末尾,现在想想缺少什么,基本上你已经在自己的示例中完成了缺少的工作…尝试插入它,当它应该返回名称时返回null。所以我不确定它是不完整还是什么。是的,这只是一个循环,循环到列表的末尾,现在想想缺少了什么,你基本上已经在自己的示例中完成了缺少的工作。。。
  Node node = head;
  Node prev = null;
  while (node != null && node.getNext() != null) {
      prev = node;
      node = node.getNext();
  }