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 回答