-1

このコードをコンパイルしようとするとうまくいきますが、メソッドをテストしたいとき、最初のメソッドはうまくいきますが、2 番目のメソッドは null に等しい例外エラー ポインターをスローしますscanner = null;scanner = new Scanner(System.in);毎回新しいスキャナーを作成せずにこの問題を解決する

public class Sca extends input
{

    private Scanner scanner;
    private String userInput;

    public ArrayShoppingList11()
    {
        super();
        scanner = new Scanner(System.in);    
    }


   protected  void addCar()
    {
        System.out.println("Please enter the name of the Car to be added");
         userInput = scanner.nextLine(); 
        super.add(userInput);
        setScanner();

    }

    protected int getPosition()
    {
        System.out.println("Please enter the name of the car");
         userInput = scanner.nextLine();
        int z = super.indexOf(userInput);
        System.out.println("The position of " + userInput + "is: " + z);  // used for the main class Testing purposes 
         setScanner();
        return z;
    }
       private void setScanner()
    {
        if(scanner != null)
        {
            scanner = null;
        }

    }
}

パブリック クラス メイン {

public static void main(String[] args) {


    ArrayShoppingList1 a = new ArrayShoppingList1();



    a .printList();
    a.addCar();  
    a .getPosition();// returning the position of an item using name of the item


    a .checkEmpty();
    a.additem();
    a .printList();
    a .removeItem();// removing the item using the index of the item 
}

}

4

2 に答える 2

1

各メソッドの最後に、 を呼び出しますsetScanner。このsetScannerメソッドは、クラスのスキャナー オブジェクトをnullに変更します。これは、次にメソッドを呼び出すときに、実際には null スキャナーを使用していることを意味します。

setScannerメソッドの最後で呼び出さないでください。同じスキャナ オブジェクトを問題なく複数回使用できます。

于 2013-10-29T23:49:43.143 に答える