在Java中,您可以将输入限制为只能输入一个数字或只能输入一定数量的数字吗?

在Java中,您可以将输入限制为只能输入一个数字或只能输入一定数量的数字吗?,java,Java,在Java中,您可以使用扫描仪将输入限制为只能输入某些类型,如数字或字母。您还可以将输入限制为可以输入的一定数量的字符吗?如注释中所述,您不能这样做。 但是,您可以检查用户的输入是否为整数且是否少于一定数量的字符,如果不提示用户重试: import java.util.Scanner; public class Main { private static int getIntInputBelowCertainLength(String prompt, Scanner scanner,

在Java中,您可以使用扫描仪将输入限制为只能输入某些类型,如数字或字母。您还可以将输入限制为可以输入的一定数量的字符吗?

如注释中所述,您不能这样做。 但是,您可以检查用户的输入是否为整数且是否少于一定数量的字符,如果不提示用户重试:

import java.util.Scanner;

public class Main {
    private static int getIntInputBelowCertainLength(String prompt, Scanner scanner, int maxLength) {
        int validInteger = -1;
        System.out.print(prompt);
        while (scanner.hasNext()) {
            if (scanner.hasNextInt()) {
                validInteger = scanner.nextInt();
                if (String.valueOf(validInteger).length() <= maxLength) {
                    break;
                } else {
                    System.out.println("ERROR: Input integer was too long, try again...");
                    System.out.print(prompt);
                }
            } else {
                System.out.println("Error: Invalid input, must be an integer, try again...");
                System.out.print(prompt);
                scanner.next();
            }
        }
        return validInteger;
    }

    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            int maxLength = 4;
            String prompt = String.format("Enter an integer with less than %d digits: ", maxLength);
            int num = getIntInputBelowCertainLength(prompt, scanner, maxLength);
            System.out.printf("Valid input! You entered: %d, an integer less than or equal to %s characters long%n",
                    num, maxLength);
        }
    }
}
import java.util.Scanner;
公共班机{
私有静态int getIntInputBelowCertainLength(字符串提示、扫描程序、int maxLength){
int validInteger=-1;
系统输出打印(提示);
while(scanner.hasNext()){
if(scanner.hasNextInt()){
validInteger=scanner.nextInt();

如果(String.valueOf(validInteger).length()在标准Java控制台中运行?不,您不能。如果另一个线程运行key simulator,您可以立即删除您键入的内容。我在一个在线文字键入比赛游戏中尝试了这一点,它也应该可以在scanner上运行。