初心者はここ!!私のプロジェクトでは、ファイルからデータを文字列として読み込み、隣接リストを持つBFS用のグラフを作成する必要があります。ファイルから各行を読み込み、最初の文字列をキーとして、隣の文字列をキーとして取得します。しかし、私はnullポインタの例外を取得する理由は理解できません。私のコードを見てください。私のファイルは、このファイルから文字列を読み込んで、グラフの隣接リストを作成する
city.txt
city1 city2 10
city1 city3 15
city2 city1 5
city2 city3 6
city2 city4 22
city2 city5 1
city3 city4 9
city3 city5 16
city4 city1 4
city4 city2 8
city5 city2 1
city5 city3 13
のように見え、私のGraph.javaファイルが
import java.io.*;
import java.util.*;
public class Graph {
Map<String, LinkedList<String>> adj;
public Graph() {
// TODO Auto-generated constructor stub
}
public Graph(String[] nodes)
{
adj = new HashMap<String, LinkedList<String>>();
for (int i = 0; i < nodes.length; ++i)
{
adj.put(nodes[i], new LinkedList<String>());
}
}
public void addNeighbor(String v1,String v2) {
adj.get(v1).add(v2);
}
public List<String> getNeighbors(String v) {
return adj.get(v);
}
public void getKeyValuePairs()
{
Iterator iterator = adj.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next().toString();
LinkedList<String> value = adj.get(key);
System.out.println(key + " " + value);
}
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File file = new File("city.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
String [] tokens = line.split("\\s+");
String [] nodes = new String[tokens.length];
for (int i = 0; i < nodes.length; ++i) {
nodes[i] = tokens[i];
}
Graph g = new Graph(nodes);
String var_1 = tokens[0];
String var_2 = tokens[1];
//String var_3 = tokens[2];
while((line = br.readLine()) != null)
{
tokens = line.split("\\s+");
nodes = new String[tokens.length];
for (int i = 0; i < nodes.length; ++i) {
nodes[i] = tokens[i];
}
var_1 = tokens[0];
var_2 = tokens[1];
//String var_3 = tokens[2];
g.addNeighbor(var_1, var_2);
}
g.getKeyValuePairs();
br.close();
}
}
である私は、ラインg.addNeighbor(VAR_1でnullポインタ例外エラーを取得していますvar_2)どうすれば問題を解決できますか?誰かがこれのためのいくつかの解決策を提案することができます。
EDIT ..
私はまた、隣接リストを表示するgetKeyValuePairs()
を使用して、私はいくつかの奇妙な出力を取得しています。これがどうして起こるのか、考えられるでしょうか?
出力:
[city2]
city1 [city2, city2]
city2 [city2, city2, city2, city2]
city3 [city2, city2]
city4 [city2, city2]
city5 [city2, city2]
私は出力が正しくないなぜあなたは提案を提供することができます質問の編集を行っている。ここでは、マップに追加バグ修正とあなたのコードです。 – Karthi13
解決済み... whileループのvar_2変数にコメントがあります。 – Karthi13