次取得しようとしたときにNULLポインタを投げスキャナ

nullの自己:
public class ScannerTest {

    protected Scanner scan;

    public ScannerTest(String s) {

        Scanner scan = new Scanner(s);

    }

    public void getone() {

        if (scan.hasNext()) {
            String temp = scan.next();
            temp = temp.replaceAll("[\\[\\](){}]", "");
            System.out.println(temp);
        }
    }

    public static void main(String[] args) {

        String s = "(abcd) (defg) (w)";
        ScannerTest test = new ScannerTest(s);
        Scanner rando = new Scanner(s);
        System.out.println(rando.next());
        System.out.println(rando.hasNext());

        test.getone();
    }
}
SMS :

あなたはいわゆる変数シャドウイングの犠牲者です。ライン付き

Scanner scan = new Scanner(s); 

あなたは、スキャンの代わりに、あなたのScannerTestクラス内のあなたのメンバーのスキャンの初期化ローカル変数を宣言しています。に言及した行を変更

scan = new Scanner(s); 

必要に応じて、それが動作します...

完全なソースコード

import java.util.Scanner;

public class SomeClass {

    protected Scanner scan;

    public SomeClass(String s) {
        scan = new Scanner(s);
    }

    public void getone() {

        if (scan.hasNext()){
            String temp = scan.next();
            temp = temp.replaceAll("[\\[\\](){}]","");
            System.out.println(temp);
        }

    }

    public static void main(String[] args) {

        String s = "(abcd) (defg) (w)";
        SomeClass test = new SomeClass(s);
        Scanner rando = new Scanner(s);
        System.out.println(rando.next());
        System.out.println(rando.hasNext());

        test.getone();

    }

}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=18811&siteId=1