Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用hasNext()验证用户输入;虽然_Java_Java.util.scanner - Fatal编程技术网

Java 如何使用hasNext()验证用户输入;虽然

Java 如何使用hasNext()验证用户输入;虽然,java,java.util.scanner,Java,Java.util.scanner,我正在建立一个电话簿程序,它向用户询问一系列问题,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()) { Sys

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

构建一个方法,如果用户输入的字符串为空,则验证字符串输入,然后打印
无效输入
,直到获得有效输入,并使用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;
    }

构建一种方法,如果用户输入的字符串为空,则验证字符串输入,然后打印
无效输入
,直到获得有效输入,并使用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;
    }

字符串读取和检查的方法是什么?此外,您还为Integer.parseInt(numberString);,分配了数字。你能解释一下它在做什么吗?
readAndCheck()
这将读取输入字符串,检查它是否为空,并获取
name
username
的有效输入字符串。我不知道你是使用
number
变量作为字符串还是整数,我将其作为整数处理。我将代码分为两种方法,“Q1()”和“readAndCheckString”。它似乎没有输出无效的输入。这只是在我编辑while循环中引号之间的内容时发生的。尽管如此,我还是喜欢检查数字的新方法。
“”.equals(numberString)
这意味着,如果用户没有键入任何内容并按Enter键,那么String readAndCheck的方法是什么?此外,您还为Integer.parseInt(numberString);,分配了数字。你能解释一下它在做什么吗?
readAndCheck()
这将读取输入字符串,检查它是否为空,并获取
name
username
的有效输入字符串。我不知道你是使用
number
变量作为字符串还是整数,我将其作为整数处理。我将代码分为两种方法,“Q1()”和“readAndCheckString”。它似乎没有输出无效的输入。这只是在我编辑while循环中引号之间的内容时发生的。尽管如此,我还是很喜欢检查数字的新方法。
“”.equals(numberString)
这意味着如果用户没有键入任何内容并按enter键