gpt4 book ai didi

java - 如何使用带有 regex.Pattern 和数组的 Scanner 使用 Java 进行输入验证

转载 作者:行者123 更新时间:2023-12-02 02:26:53 25 4
gpt4 key购买 nike

我想使用 java.util.regex.Pattern 对简单的 Java 应用程序应用一些输入验证。在添加模式匹配之前,我能够按预期将用户输入输入到我的数组中,但我不知道如何使用包含的模式匹配来执行此操作。

这行似乎有问题:in.nextLine();现在我添加了带有模式匹配的 while 语句,它在错误的位置吗?

这是我的小应用程序中的相关代码块。

//These variables used during input validation
String tempName;
int tempGrade;

//These regex patterns are for input validation
//Names can be 1-15 letters and grades are 2 digits
Pattern namePattern = Pattern.compile("[A-Za-z]{1,15}");
Pattern gradePattern = Pattern.compile("[0-9]{2,2}");

//Parallel arrays to hold last names and grades
String[] names = new String[5];
int[] grades = new int[5];


Scanner in = new Scanner(System.in);
try {


for(int i = 0; i<5; i++) {
System.out.println("Enter a name:");
tempName = in.nextLine();
System.out.println("Enter a grade:");
tempGrade = in.nextInt();
in.nextLine();
while(!namePattern.matcher(tempName).matches()) {
System.out.println("Bad input. Try again");
}
names[i] = tempName;
grades[i] = tempGrade;
}

最佳答案

没有。 in.nextLine() 是正确的(并消耗调用 nextInt() 中的尾随换行符)。问题出在你的循环上。

while(!namePattern.matcher(tempName).matches()) {
System.out.println("Bad input. Try again");
tempName = in.nextLine(); //<-- add this.
}

在不更新 tempName 的情况下,如果您进入循环体,您将永远不会离开,因为打印消息后条件始终为 true。

关于java - 如何使用带有 regex.Pattern 和数组的 Scanner 使用 Java 进行输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47666093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com