【发布时间】:2013-01-10 10:59:22
【问题描述】:
Scanner sc = new Scanner(System.in);
Boolean valid = true;
do{
valid = true;
//get first name input and valid
System.out.print("Enter your First Name > ");
String firstName = sc.nextLine();
if(firstName.trim().length() > 25){
valid = false;
}
//get last name input and valid
System.out.print("Enter your Last Name > ");
String lastName = sc.nextLine();
if(lastName.trim().length() > 25){
valid = false;
}
//get email input and valid
System.out.print("Enter your Email > ");
String email = sc.nextLine();
if(email.trim().length() > 40){
valid = false;
}
ctrl.addPerson(email, firstName, lastName);
}while(valid == false);
不断提示用户输入无效,但仍添加/保存无效数据 (addPerson)。 我可以理解为什么保存无效,但我应该如何正确使用 if ?谢谢你的帮助!
我已经阅读了大家的建议和建议,以下是编辑后的代码。希望会更好。
Scanner sc = new Scanner(System.in);
boolean valid = true;
String firstName = null;
String lastName = null;
String email = null;
Date birthday = null;
do{
System.out.print("Enter your First Name > ");
firstName = sc.nextLine();
}while(firstName.trim().length() > 25);
do{
System.out.print("Enter your Last Name > ");
lastName = sc.nextLine();
}while(lastName.trim().length() > 25);
do{
System.out.print("Enter your Email > ");
email = sc.nextLine();
}while(email.trim().length() > 40);
ctrl.addPerson(email, firstName, lastName);
【问题讨论】:
-
尝试找出哪些条件不成立。添加一些日志输出或使用调试器来执行此操作。
-
另一个改进是在循环外部声明
String firstName, lastName, email = null; //expand to 3 lines..和内部,在提示输入之前检查null(再次)。不得不多次输入长名字会令人沮丧,因为我无法正确获取我的电子邮件。 -
@AndrewThompson 是的,你是对的。为了让它不那么令人沮丧,我修改并使用了三个循环在用户输入后立即进行验证。抱歉,我没有得到“在提示输入(再次)之前检查 null。”部分 =p
-
您更改的代码(这比我的评论更好)使其无关紧要。
标签: java loops if-statement validation