ここではJavaのNoSuchElementExceptionに多くのスレッドがあることを知っていますが、それでもここで何が起こっているのか理解できません
http://codekata.pragprog.com/2007/01/kata_eighteen_t.htmlに投稿されている推移的な依存関係Kata18の解決策を考え出そうとしています。
依存関係_forメソッドは、charアイテムを受け取り、そのアイテムのすべての依存関係を計算することになっています。finalDependenciesArrayListに要素を追加しようとすると例外が発生します
これは、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;
}
}
processingDependenciesとfinalDependenciesArrayListsがnullではないため、私は少し困惑しています。そして、processingDependenciesarraylistにはアイテムが含まれています