我正在尝试使用stringTokenizer方法读取以文件格式存储在文件中的2D数组。
1 1
1 1
代码是...
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
for(int i=0;i<n;i++)
for(int j=0;j<n;j++){
StringTokenizer tok = new StringTokenizer(in.readLine());
t[i][j]=Integer.parseInt(tok.nextToken());
}
当我运行此文件时,我收到java.lang.NullPointerException错误。但是如果我在文件中使用它
1 1 1 1
该代码有效!
为什么会这样呢?
最佳答案
通过将StringTokenizer
对象声明/实例化放在嵌套的for
循环中,在嵌套循环的范围之外就不会存在StringTokenizer
对象。因此,这实际上只是重复嵌套循环,所以您阅读的所有内容都是水平的。如果将StringTokenizer
移动到嵌套循环的外部和父循环的内部,它将仍在嵌套循环的范围内。那应该解决您的问题。
移动:
嵌套循环上方的StringTokenizer tok = new StringTokenizer(in.readLine());
。