1

ここに、ユーザー入力が数値であるか範囲内であるかを確認する関数があります。

public static int getNumberInput(){
    Scanner input = new Scanner(System.in);
    while(!Inputs.isANumber(input)){
        System.out.println("Negative Numbers and Letters are not allowed");
        input.reset();
    }
    return input.nextInt();
}


public static int getNumberInput(int bound){
    Scanner input = new Scanner(System.in);
    int val =   getNumberInput();
    if(val > bound){
        System.out.println("Maximum Input is only up to: "+ bound+" Please Try Again: ");
        input.reset();
        getNumberInput(bound);
    }
    return val;
}

この関数でgetNumberInput(int bound)メソッドを呼び出すたびに

public void askForDifficulty(){
    System.out.print("Difficulty For This Question:\n1)Easy\n2)Medium\n3)Hard\nChoice: ");
    int choice = Inputs.getNumberInput(diff.length);
    System.out.println(choice);
}

範囲外の数値を挿入した場合、最大数は5のみであるとしましょう。getNumberInput(intbound)はそれ自体を再度呼び出します。正しい値または範囲内の値を挿入すると、挿入した最初の値/前の値のみが返されます

4

1 に答える 1

1

ifはであるgetNumberInput(int bound)必要がありwhileます。編集また、2つの方法を組み合わせる必要があります。

public static int getNumberInput(int bound){
    Scanner input = new Scanner(System.in);
    for (;;) {
        if (!Inputs.isANumber(input)) {
            System.out.println("Negative Numbers and Letters are not allowed");
            input.reset();
            continue;
        }
        int val = getNumberInput();
        if (val <= bound) {
            break;
        }
        System.out.println("Maximum Input is only up to: "+ bound+" Please Try Again: ");
        input.reset();
    }
    return val;
}
于 2012-08-23T00:44:44.240 に答える