Java 如何使用不同的打印语句进行多个条件输入验证?
我是Java初学者,遇到的问题是我不确定如何将输入验证链接在一起,以便对用户的错误输入做出正确的响应。例如,当用户输入的内容不是字母时,程序会告诉用户他们输入的内容不是字母,但如果我输入多个字母,程序不会打印出正确的响应。这取决于用户首先犯的错误 我感谢所有的反馈Java 如何使用不同的打印语句进行多个条件输入验证?,java,validation,input,Java,Validation,Input,我是Java初学者,遇到的问题是我不确定如何将输入验证链接在一起,以便对用户的错误输入做出正确的响应。例如,当用户输入的内容不是字母时,程序会告诉用户他们输入的内容不是字母,但如果我输入多个字母,程序不会打印出正确的响应。这取决于用户首先犯的错误 我感谢所有的反馈 String input; final Pattern alphabet = Pattern.compile("^[A-Za-z]$"); Scanner kb = new Scanner(System.in);
String input;
final Pattern alphabet = Pattern.compile("^[A-Za-z]$");
Scanner kb = new Scanner(System.in);
System.out.println("Enter a letter of the alphabet: ");
input = kb.nextLine();
while (!alphabet.matcher(input).matches())
{
System.out.println("That's not a letter, try again.");
input = kb.nextLine();
}
while (input.length() > 1 )
{
System.out.println("Please enter only one letter");
input = kb.nextLine();
}
kb.close();
您可以尝试这样做:使其成为if中的检查条件并得到结果
final Pattern alphabet = Pattern.compile("^[A-Za-z]$");
Scanner kb = new Scanner(System.in);
public void drive_main() {
System.out.println("Enter a letter of the alphabet: ");
String input = getInput();
while (input == null) {
input = getInput();
}
}
public String getInput() {
String result;
result = kb.nextLine();
if (!alphabet.matcher(result).matches()) {
System.out.println("That's not a letter, try again.");
return null;
}
if (result.length() > 1) {
System.out.println("Please enter only one letter");
return null;
}
return result;
}
或者您可以将您的输入分配给一个新的类包(输入、错误和是否有错误),使其更灵活
final Pattern alphabet = Pattern.compile("^[A-Za-z]$");
Scanner kb = new Scanner(System.in);
public void drive_main() {
System.out.println("Enter a letter of the alphabet: ");
InputSet input = getInput(kb.nextLine());
while (input.isError) {
System.out.println(input.errorMessage);
input = getInput(kb.nextLine());
}
}
public InputSet getInput(String input) {
InputSet result = new InputSet(input, false, "");
if (!alphabet.matcher(result.input).matches()) {
result.errorMessage = "That's not a letter, try again.";
result.isError = true;
}
if (result.input.length() > 1) {
result.errorMessage = "Please enter only one letter";
result.isError = true;
}
return result;
}
private class InputSet {
String input;
boolean isError;
String errorMessage;
InputSet() {
}
InputSet(String input, boolean isError, String errorMessage) {
this.input = input;
this.isError = isError;
this.errorMessage = errorMessage;
}
}
首先,您不应该使用while循环来检查条件。第二,正确设计程序循环>验证错误。
您应该编写比容易发现错误更实用、更干净的代码。尽量少使用循环,这样会导致更多错误,使用的程序内存第二种解决方案更符合我的要求,因为它需要不断要求用户在出错时实际输入一些内容,而第一种解决方案不会这样做。