編集:
提案したすべての変更を行った後、問題は残りました。デバッガーは、補題変数がnullであると言いましたが、私が適用した修正は状況を改善しませんでした。それで、締め切りの問題のために、私は別の観点から問題に取り組むことにしました。よろしくお願いします。:)
私は小さなプログラムを書いていて、NullPointerException
私を夢中にさせています。私には2つのクラスがあります:SystemDir
とSearch
。1つ目は、初期ディレクトリと検索補題のカプセル化です。Search
クラスを以下に示します。簡単に言うと、1つのスレッドで第1レベルのディレクトリを検索し、もう1つのスレッドでサブディレクトリを拡張する必要があります。それは私が例外を得るところです。例外文字列は
Exception in thread "Thread-0" java.lang.NullPointerException
at Search.searchFiles(Search.java:59)
at Search.<init>(Search.java:53)
at SystemDir.<init>(SystemDir.java:61)
at Search$1.run(Search.java:45)
at java.lang.Thread.run(Thread.java:679)
3つのポイントが最後のループ内のt.start()である場合、searchFilesメソッド呼び出し、上記のいくつかの行、およびrunメソッド内の新しいSystemDir呼び出し。手伝ってくれませんか。
public class Search {
private Thread t;
public Search(String[] subFiles, final String[] subDir, final String lemma) {
t = new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<subDir.length;i++) {
try {
System.out.println(subDir[i]);
new SystemDir(subDir[i], lemma);
}
catch (NoDirectoryException ex) {
Logger.getLogger(Search.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});
searchFiles(subFiles,lemma);
}
private void searchFiles(String[] subFiles, String lemma) {
for(int i=0;i<subFiles.length;i++) {
t.start();
if(subFiles[i].contains(lemma)) {
System.out.println(subFiles[i]);
}
}
}
}