2012-08-02 37 views
0

我想使用的StringTokenizer方法用于读取存储在格式文件中的二维数组..StringTokenizer的方法错误

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 

该代码的作品!
为什么会发生?

+0

运行程序时设置为“n”是什么? – Vivek 2012-08-02 18:19:10

+0

线程“main”中的@thinksteep异常java.lang.NullPointerException java.util.stringtokenizer。 <未知来源> – 2012-08-02 18:20:25

+0

因为你直接运行'i'和'j'直到'n',它只会在'n'阵列上工作 – Alex 2012-08-02 18:21:55

回答

2

通过在嵌套for循环中使用StringTokenizer对象声明/实例化,StringTokenizer对象不存在于嵌套循环范围之外。所以这真的只是重复嵌套循环,所以你读的所有东西都只是水平的。如果将StringTokenizer移到嵌套循环的外部和父循环的内部,它仍将处于嵌套循环的作用域中。这应该能解决你的问题。

移动: StringTokenizer tok = new StringTokenizer(in.readLine());您的嵌套循环之上。

+0

谢谢一吨btw愚蠢的我不知道这一点! – 2012-08-02 18:32:03

+0

适用于我们所有人。有时候第二双眼睛会有帮助。 :) – minhaz1 2012-08-02 18:39:22