gpt4 book ai didi

java - 是什么导致我的 ArrayList 出现 NoSuchElementException

转载 作者:行者123 更新时间:2023-11-30 04:34:34 26 4
gpt4 key购买 nike

我知道这里有很多关于 Java 中的 NoSuchElementException 的线程,但我仍然无法弄清楚这里发生了什么

我正在尝试为传递依赖 Kata 18 提出一个解决方案,该解决方案发布于 http://codekata.pragprog.com/2007/01/kata_eighteen_t.html

dependency_for 方法应该接受一个 char 项并计算该项的所有依赖项。当我尝试将元素添加到 FinalDependency ArrayList 时发生异常

这是我的 NullPointerException 发生的地方。我跟踪了所有这些数据结构,没有一个具有 Null 值。我不明白是什么导致了我的异常。请看我的代码:

public class Test_Dependencies 
{
public static void main(String[] args) {
Dependencies Dep = new Dependencies();
Dep.add_direct('A', "B C");
Dep.add_direct('B', "C D");
Dep.dependencies_for('A');

}
}


public class Dependencies {
HashMap dependenciesList;


public Dependencies()
{
HashMap<Character, ArrayList> dependenciesList = new HashMap<Character, ArrayList>();
}

public void add_direct(char mainItem, String dependentItems)
{
// code that works here
}

public String dependencies_for(char item)
{

ArrayList finalDependencies = new ArrayList<Character>();
Character key = new Character(item);

//get initial dependencies for the item and add them
ArrayList processingDependencies = dependenciesList.get(key);
Iterator itr = processingDependencies.iterator();

while(itr.hasNext())
{
if(finalDependencies.contains(itr.next()) == false && itr.next() != key)
{

// NoSuchElement exception here
finalDependencies.add(itr.next());

// look again at each item in dependenciesList. If it is in the list then add it to processingDependencies
if(dependenciesList.containsKey(itr.next()) && !processingDependencies.contains(itr.next()))
{
processingDependencies.add(itr.next());

}
}

}

// turn finalDependencies into a string
itr = finalDependencies.iterator();
String allDependencies = "";
while(itr.hasNext())
{
allDependencies = allDependencies + " " + itr.next();
}


return allDependencies;

}
}

我有点困惑,因为processingDependency 和finalDependency ArrayLists 不为空。并且processingDependencies arraylist包含一个项目

最佳答案

您调用了两次电话。第一个调用由匹配的 hasNext 调用“保护”。第二个不是。将 next 的结果保存到临时变量中并使用它,而不是直接使用该值,因为每次调用 next 都会首先尝试推进迭代器。在好的情况下,你会得到一个异常(exception)。在糟糕的情况下,事情似乎正常,但您的程序正在处理错误的值。

关于java - 是什么导致我的 ArrayList 出现 NoSuchElementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13807344/

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