gpt4 book ai didi

java - 为什么会无限循环? ( java )

转载 作者:行者123 更新时间:2023-11-29 07:19:56 26 4
gpt4 key购买 nike

我正在尝试为链表创建一个 add 方法,但由于某种原因(这对我来说并不明显,事实上我来这里是为了帮助查找错误)它每次都会进入无限循环。

编辑:我发现了错误,我会保留我的原始代码,并在注释中加上更正后的代码

public void insert(String majorName)
{
MajorNode newNode = new MajorNode(majorName, 1);
boolean inList = false;
MajorNode current = first;

if(isEmpty())
{
first = newNode;
// inList = true;
}
else
{
while(current.next != null)
{
if(current.majorName.equalsIgnoreCase(majorName))
{
current.frequency++;
inList = true;
break;
}
else
{
current = current.next;
}
}
}

if(!inList)
{
newNode.next = first;
first = newNode;
}
}

如果需要,这是我的节点类:

public class MajorNode 
{
public String majorName;
public int frequency;
public MajorNode next;

public MajorNode(String majorName, int frequency)
{
this.majorName = majorName;
this.frequency = frequency;
}

public String toString()
{
return majorName + " " + frequency;
}
}

最佳答案

在第一次调用 insert() 时,假设 isEmpty() 返回 true,因此 first 被设置为 newNodenext 字段之前的 newNode 设置为 first 的前一个(空)值。因此,当列表非空时,循环将无限迭代列表中 next 字段指向自身的最后一个元素。

出于好奇,您为什么要尝试实现自己的链表功能而不是基于可用的包(例如 java.util.LinkedList<E>)构建?

关于java - 为什么会无限循环? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5890856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com