0
public static void main(String[]args){

**exp("^[a[k][t][l]]{6}$"); //line 9**
exp("^(bEt).*(oc)$");
exp("^(bEt)$");
exp("^(a).*");
exp("bEt(oc)*");
exp("^(bEt).*");
exp [baba][bebe][bibi][bobo][bubu][fafa][fefe][fofo][fufu]

}

public static void exp(String uttryck){
    int counter = 0;
    File fil = new File("Walta_corpus1.txt");
    Scanner sc = null;
    try{
        sc = new Scanner(fil);
    }
    catch(FileNotFoundException foo){
    }
    **String word = sc.next();** line 28
    Pattern pattern = Pattern.compile(uttryck);
    Matcher matcher = pattern.matcher(word);



    while(word != null){
        if(matcher.find()){
            counter++;
            System.out.println(word);
            }

        if(sc.hasNext()){
            word=sc.next();
            matcher = pattern.matcher(word);
            }
        else
            word = null;
    }
    System.out.println(counter);

}

助けが必要な問題は次のとおりです。

    Exception in thread "main" java.lang.NullPointerException
at raknare.exp(raknare.java:28)
at raknare.main(raknare.java:9)

私はたくさん試しましたが、実際には何もうまくいきません..

4

2 に答える 2

1

以下のコードを確認してください:

public static void exp(String uttryck) throws FileNotFoundException{
// .....
try{
    sc = new Scanner(fil);
}
catch(FileNotFoundException foo){
    // if scanner throws exception, sc is null
    foo.printStackTrace(); // add this method call and check.
    throw foo; //rethrow exception to caller
}
String word = sc.next(); // if catch is executed, sc will give NullPointerException

//.....
}

を取得した場合、例外をキャッチした後に続行しているため、上記の行にFileNotFoundException到達します。NullPointerExceptionFileNotFoundException

于 2012-08-21T09:47:31.043 に答える
0

この行に NullPointerException があります:

String word = sc.next();

つまり、初期化されてScanner scいません。ファイルが見つからず、 aFileNotFoundExceptionがスローされた場合に発生します。catch ブロックで何もしないため、そのような例外がスローされたかどうかはわかりません。

これを試して :

public static void exp(String uttryck){
    int counter = 0;
    File fil = new File("Walta_corpus1.txt");
    Scanner sc = null;
    try{
        sc = new Scanner(fil);
        String word = sc.next();**
        Pattern pattern = Pattern.compile(uttryck);
        Matcher matcher = pattern.matcher(word);
        while(word != null){
            if(matcher.find()){
            counter++;
            System.out.println(word);
            }

            if(sc.hasNext()){
                word=sc.next();
                matcher = pattern.matcher(word);
            } else
                word = null;
        }
        System.out.println(counter);
    } catch(FileNotFoundException foo){
        foo.printStackTrace();
    }
}

空の catch ブロックを持つことは本当に悪い考えだと思います。例外をキャッチするかどうかを知るために、少なくとも印刷を実行してみてください。

于 2012-08-21T09:53:57.057 に答える