Java 如何使用hasNext()验证用户输入;虽然
我正在建立一个电话簿程序,它向用户询问一系列问题,Q1:输入您的姓名,Q2:输入您的用户名,Q3:输入您的号码。我正在努力将异常包括在我的程序中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
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键