【发布时间】:2018-11-09 19:48:25
【问题描述】:
我正在尝试读取包含图形邻接列表的文件。该文件如下所示:
1 2 3 5
2 4
3 1 5
4
5 2 4
每一行都是一个链表,其长度与其他行不同。到目前为止,我尝试过这个:
private static List<ArrayList<String>> adj;
ArrayList<String> rows = new ArrayList<String>();
int i = 0;
try {
Scanner input = new Scanner(new BufferedReader(new FileReader(fileName)));
//BufferedReader input = new BufferedReader(new FileReader(fileName));
String line;
while (input.hasNextLine()){
i++;
String[] cols = input.nextLine().trim().split(" ");
for (String c : cols){
rows.add(c);
}
adj.add(rows);
}
//print the matrix
for (List<String> list : adj) {
for (String str : list) {
System.out.print(str + " ");
}
System.out.println();
}
}
catch (IOException e){
System.out.println("Error reading input file!");
}
但它不起作用,因为当我尝试打印整个矩阵时它显示错误(NullPointerException)。如何正确读取此文件?
【问题讨论】:
-
你需要在
adj.add(rows);后面加上rows = new ArrayList<String>(); -
@Ivan 我试过了。但没有任何变化。仍然无法打印整个矩阵。
-
那么请添加您用于打印的代码。还有异常堆栈跟踪。
-
问题是你需要初始化“adj”。
-
正如@paulsm4 所说,将
private static List<ArrayList<String>> adj;替换为private static List<ArrayList<String>> adj = new ArrayList<>();