1

我正在构建一个电话簿程序,它向用户询问一组问题,Q1:输入您的姓名,Q2:输入您的用户名,Q3:输入您的号码。我正在努力在我的程序中包含异常。

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(); 几乎相同的代码。我的问题是验证用户输入并转到下一个问题。

4

1 回答 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;
    }
于 2020-06-06T15:32:12.423 回答