【问题标题】:How to validating user input with hasNext(); while?如何使用 hasNext() 验证用户输入;尽管?
【发布时间】:2020-06-06 15:13:38
【问题描述】:

我正在构建一个电话簿程序,它会询问用户一系列问题,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(); 几乎相同的代码。我的问题是验证用户输入并转到下一个问题。

【问题讨论】:

    标签: java java.util.scanner


    【解决方案1】:

    如果用户输入了空字符串,则构建一个验证字符串输入的方法,然后打印 invalid input 直到得到有效的字符串,并使用正则表达式 \\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;
        }
    

    【讨论】:

    • String readAndCheck有哪些方法?此外,您已将数字分配给 Integer.parseInt(numberString); .你能解释一下这是做什么的吗?
    • readAndCheck() 这将读取输入字符串并检查它是否为空并获取nameusername 的有效输入字符串
    • 不知道你是用number变量作为字符串还是整数,我把它作为整数处理
    • 嘿,我把代码分成了两种方法,'Q1()' 和 'readAndCheckString'。它似乎没有输出无效输入。只有当我编辑了while循环中引号之间的内容时。不过,我确实喜欢检查数字的新方法。
    • "".equals(numberString) 这意味着如果用户没有输入任何内容并按回车键
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多