题目要求:
新浪微博在用户注册时,要求用户名不得少于5个字符,密码不得少于6个字符,且两次输入的密码必须一致,注册邮箱有效。
请编程实现该功能,程序运行时输入注册的用户名、密码、确认密码和邮箱,如果输入信息符合要求,则提示注册成功,否则显示相应的错误提示信息(如用户名少于5个字符、输入的两次密码不一致等等)。
注:注册邮箱是否有效,可以通过发送激活邮件来完成,目前我们还做不到这一点,暂时先检查邮箱名是否正确。
简单的判断规则:(1)至少包含符号‘@’和‘.’,(2)‘@’在‘.’之前,(3)‘@’不是第一个字符,‘.’不是最后一个字符。
解题思路:利用正则表达式和循环实现,符合注册要求就跳出循环,不符合则一直循环输入,直到符合要求。
代码如下:
package JavaTest;
import java.util.*;
import java.util.regex.*;
public class StringTest_2 {
static String user,password_1,password_2,mail;
static boolean flag=true;
static String regex_1="(.*)(\\@.+\\.)(.*)";//测试邮箱格式是否匹配的正则表达式
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
while(flag) {
System.out.println("请输入你要注册的用户名:");
user=scanner.nextLine();
if(user.length()>=5) {
System.out.println("你设置的用户名符合要求,请继续下一步!");
break;
}
else {
System.out.println("你设置的用户名不符合要求,请重新设置!");
}
}
while(flag) {
System.out.println("请输入你要注册的密码(第一遍)");
password_1=scanner.nextLine();
System.out.println("请输入你要注册的密码(第二遍)");
password_2=scanner.nextLine();
if(password_1.equals(password_2)) {
//设置的密码长度要大于6
if(password_1.length()>=6) {
System.out.println("密码设置成功,请继续下一步.");
break;
}
else {
System.out.println("密码长度不够,请重新输入。");
}
}
else {
System.out.println("两边密码输入不一致,请重新输入!");
}
}
while(flag) {
System.out.println("请输入你要注册的邮箱:");
mail=scanner.nextLine();
Pattern r=Pattern.compile(regex_1);
Matcher m=r.matcher(mail);
if(m.find()) {
System.out.println("邮箱格式正确,恭喜你,注册成功,快去开始新浪生活吧!");
break;
}
else {
System.out.println("邮箱格式有误,请重新输入!");
}
}
}
}
运行结果如下: