如何使用hasNext()验证用户输入;一会儿吗?

问题描述 投票:0回答:1

我正在构建一个电话簿程序,其中它会询问用户一系列问题,问题1:输入您的姓名,问题2:输入用户名,问题3:输入您的电话号码。我正在努力在程序中包含异常。

public void Q1(){
Scanner scan = new Scanner(System.in);
    do {
        System.out.println("Enter the name of the person: ");
        while (!scan.hasNext()) {
            System.out.println("Invalid Input!");
            scan.next();
        }
        firstName = scan.next();
    }while(firstName != null);
        Q2();
    }

Q2();具有与Q1();几乎相同的代码。我的问题是验证用户输入并转到下一个问题。

java java.util.scanner
1个回答
0
投票

[如果用户输入的是空字符串,则建立一种验证字符串输入的方法,然后打印invalid input直到获得有效的字符串,然后使用REGEX \\d+来验证数字的字符串,这意味着一个或多个数字,如下所示:

    String name, username;
    int number;

    public void Q1(Scanner scan) {
        System.out.println("Enter the name of the person: ");
        name = readAndCheckString(scan);
    }

    public void Q2(Scanner scan) {
        System.out.println("Enter the username of the person: ");
        username = readAndCheckString(scan);
    }

    public void Q3(Scanner scan) {
        System.out.println("Enter number of the person: ");
        String numberString = readAndCheckDigit(scan);

        number = Integer.parseInt(numberString);
    }

    String readAndCheckString(Scanner scan) {
        String input = scan.nextLine();
        while ("".equals(input)) {
            System.out.println("Invalid Input!");
            input = scan.nextLine();
        }
        return input;
    }

    String readAndCheckDigit(Scanner scan) {
        String numberString = scan.nextLine();
        // if numberString is empty or not digit then print invalid
        while ("".equals(numberString) || !numberString.matches("\\d+")) {
            System.out.println("Invalid Input!");
            numberString = scan.nextLine();
        }
        return numberString;
    }
© www.soinside.com 2019 - 2024. All rights reserved.