使用 java.util.Scanner 进行整数验证

Integer validation using java.util.Scanner

我正在尝试验证用户是否只输入了一个整数。有没有另一种方法可以使验证更简单?

Scanner in = new Scanner(System.in);
System.out.print("Enter the amount of subjects that you need to get an average of: ");
int amount_of_subjects;
    
while (!in.hasNextInt())
{
  // warning statement
  System.out.println("Please Enter integer!");
  in.nextLine();
}
 
amount_of_subjects = Integer.parseInt(in.nextLine());

取决于你想用你的程序做什么。

如果您只想将有效整数作为输入,您可以使用 nextInt() 函数

Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();

如果你想检查用户是否输入了一个有效的整数来响应你可以这样做:

public boolean isNumber(String string) {
    try {
        Integer.parseInt(string);
        return true;
    } catch (NumberFormatException e) {
        return false;
    }
}

看来你的解决方案已经很简单了。这是一个更简约的版本:

System.out.print("Please enter an integer: ");
while(!scan.hasNextInt()) scan.next();
int demoInt = scan.nextInt();

来自

尽管您只会减少代码行数,同时还可能降低可读性。

这是一种更简单的方法,它验证整数值 0 - 包含最大值并检查用户输入类型并最终显示结果或错误消息。它一遍又一遍地循环,直到收到良好的数据。

import java.util.Scanner;
import java.util.InputMismatchException;


class Main {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int userVal = 0;
        
        while(true){
            
            try{
                System.out.print("Enter a number: ");
                userVal = scan.nextInt();

                if ((userVal >= 0 && userVal <= Integer.MAX_VALUE)){
                    System.out.println(userVal);
                    break;
                }
            }
            catch(InputMismatchException ex){
                System.out.print("Invalid or out of range value ");
                String s = scan.next();
            }           
        } 
    }
}