0

Scanner オブジェクト scを使用して、ユーザーの入力から整数を読み取ろうとしており、それが 0 より大きいかどうかを評価する必要があります。そのため、while() で次の OR 条件を設定して、空行か入力番号かを確認します。 0 未満。ただし、無効な入力が検出された後、プログラムは入力を受け取りません。どんな助けでも大歓迎です。

 Scanner sc = new Scanner(System.in);
 while (!sc.hasNextInt() || sc.nextInt() <= 0)
        {
            System.out.println("Invalid input\n the number needs to be greater than 0");
            sc.next();
        }
        int number = sc.nextInt(); 
4

1 に答える 1

1

問題はおそらく、条件で nextInt を消費していることです。それを変数に読み込む必要があります。

パッケージテスト;

import java.util.Scanner;

public class ScannerTest {
    public static void main(String[] arg) {
        Scanner sc = new Scanner(System.in);
        int input=-1;
        while(input<0){
            while (!sc.hasNextInt()) {
                if(sc.hasNext()){
                    String s = sc.next(); /* read things that are not Integers */
                    System.out.println("Invalid input:" + s);
                }
            }
            input = sc.nextInt();
            if(input<0){
                System.out.println("Please input a positive integer.");
            }
        }
        System.out.println("Valid input was "+input);
    }
}
于 2013-09-16T03:40:22.323 に答える