2012-08-02 38 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