当我们在编写好一个程序,运行时就会遇到这个问题,我还以为是程序的问题,查了好久也没找到问题的原因,愁死俺老李了。
终于,我寻到了一丝蛛丝马迹,在这里分享给大家,希望大家不要再困扰这个问题。前车之鉴、后车之师。
当你在控制台输入数据,明明已经做好判断,一步一步的运行,但是在输入数据的时候不小心按了一下空格(可能是故意的),回车就会发现下一步已经执行了,这就比较挠头了。
代码如下
import api.height.Gender;
import java.util.Scanner;
/**
* 注册类
*/
public class Test {
private String name;
private String gender;
private String email;
private String password;
private String qpwd;
/**
* 注册方法
*/
public void rigister(){
boolean flag=true;
Scanner sc=new Scanner(System.in);
do {
flag=false;
System.out.println("请输入用户名:");
name=sc.next();
this.setName(name);
if (name.length()<3){
flag=true;
}else {
System.out.println("请选择您的性别<1、男 2、女>");
this.setGender(sc.next().trim());
System.out.println("请输入您的邮箱地址:");
email=sc.next();
this.setEmail(email);
if (email.indexOf('@')==-1&&email.indexOf(".com")==-1){
flag=true;
}else {
System.out.println("请输入密码:");
password=sc.next();
this.setPassword(password);
if (password.length()<6){
flag=true;
}else {
System.out.println("请确认密码:");
qpwd=sc.next();
this.setQpwd(qpwd);
if (qpwd.equalsIgnoreCase(this.getPassword())){
System.out.println("恭喜你!注册成功!\n请牢记用户名和密码!");
System.out.println("用户名:" + this.getName() + "\n邮箱:"
+ this.getEmail() + "\n密码:" + this.getPassword());
}else {
flag=true;
}
}
}
}
}while (flag);
}
public String getName() {
return name;
}
/**
* 判断用户名是否合法
* @param name
*/
public void setName(String name) {
if (name.length()<3){
System.out.println("用户名不少于3位!");
}else {
this.name = name;
}
}
public String getGender() {
return gender;
}
/**
* 判断性别
* @param gender
*/
public void setGender(String gender) {
if (gender.equals("1")||gender.equalsIgnoreCase("男")){
this.gender= Gender.MALE.toString();
}else {
this.gender = Gender.FEMALE.toString();
}
}
public String getEmail() {
return email;
}
/**
* 判断邮箱是否符合规格
* @param email
*/
public void setEmail(String email) {
if (email.indexOf('@')==-1&&email.indexOf(".com")==-1){
System.out.println("邮箱格式是不对!");
}else {
this.email = email;
}
}
public String getPassword() {
return password;
}
/**
* 判断密码长度
* @param password
*/
public void setPassword(String password) {
if (password.length()<6){
System.out.println("密码长度不能低于6位");
}else {
this.password = password;
}
}
public String getQpwd() {
return qpwd;
}
/**
* 判断密码是否一致
* @param qpwd
*/
public void setQpwd(String qpwd) {
if (qpwd.equalsIgnoreCase(this.getPassword())){
this.qpwd = qpwd;
}else {
System.out.println("密码不一致!");
}
}
/**
* 测试
* @param args
*/
public static void main(String[] args) {
Test test=new Test();
test.rigister();
}
}
性别使用枚举类别
package api.height;
/**
* 性别
*/
public enum Gender {
MALE(1){
@Override
public String toString() {
return "男";
}
},FEMALE(2){
@Override
public String toString() {
return "女";
}
};
int num;
Gender(int num){
this.num=num;
}
public int getNum(){
return num;
}
}
执行结果
//正常情况
请输入用户名:
娃哈哈
请选择您的性别<1、男 2、女>
1
请输入您的邮箱地址:
www@.com
请输入密码:
lkj1234
请确认密码:
lkj1234
恭喜你!注册成功!
请牢记用户名和密码!
用户名:娃哈哈
邮箱:www@.com
密码:lkj1234
执行结果
//特殊情况
请输入用户名:
ldp
请选择您的性别<1、男 2、女>
1
请输入您的邮箱地址:
222@qq.com ldp555 ldp555
请输入密码:
请确认密码:
恭喜你!注册成功!
请牢记用户名和密码!
用户名:ldp
邮箱:222@qq.com
密码:ldp555