1

したがって、これはクラッシュプルーフスキャナークラスの私のコードです:

import java.util.*;
public class BPScanner {
    Scanner kb = new Scanner(System.in);
    public int nextInt() {
        while (true) {
            try {
                String input = kb.nextLine();
                int i = Integer.parseInt(input);
                return i;
        }
            catch (NumberFormatException e1) {}
            catch (NoSuchElementException e2) {}
            System.out.print("\nPlease input an integer: ");
            kb.close();
            kb = new Scanner(System.in);
        }
    }    
}

このクラスを別のクラスから呼び出しています。

public void scnr() {
    while (true){
        System.out.print("Type a num (for test), (0 to break)");
        int n = bpkb.nextInt();
        if (n == 0) break;
        System.out.println(n);
    }
}

実行すると、次のように言い続ける無限ループが返されます。

Please input an integer: 
Please input an integer: 
Please input an integer: 
Please input an integer: 

それを修正する方法はありますか?事前にどうもありがとうございました。

4

1 に答える 1

1

nextInt関数から次のコードを削除するだけです。

kb.close();
kb = new Scanner(System.in);
于 2012-12-08T03:02:05.987 に答える