今天碰到了一个小问题,作为初学者,这个问题困扰了我比较长的时间,这是一个图书管理系统的登陆模块,代码如下
private void loginMenu() {
int count = 0;
User user = null;
while (true) {
System.out.println("请输入姓名");
String name = scanner.next();
System.out.println("请输入密码");
String psw = scanner.next();
user = new User(0, name, psw, 0, 0);
if (userBiz.login(user)==-1) {
System.out.println("用户不存在");
count++;
if(count==3){
System.out.println("错误次数已达上限,程序退出");
exit(0);
}
System.out.println("还有"+(3-count)+"次机会");
while(true){
if(myUtil.isContinue("是否还要继续")==1){
break;
} else if (myUtil.isContinue("是否还要继续")==2) {
return;
} else {
System.out.println("输入错误,请重新输入");
}
}
} else if (userBiz.login(user)==-2){
System.out.println("密码错误");
count++;
if(count==3){
System.out.println("错误次数已达上限,程序退出");
exit(0);
}
System.out.println("还有"+(3-count)+"次机会");
while(true){
if(myUtil.isContinue("是否还要继续")==1){
break;
} else if (myUtil.isContinue("是否还要继续")==2) {
return;
} else {
System.out.println("输入错误,请重新输入");
}
}
}else if (userBiz.login(user)==-3){
System.out.println("登陆成功");
selfid = userBiz.selectByName(name).getId();
userSelfMainMenu();
}
}
}
这是程序中isContinue方法
public static int isContinue(String message){
System.out.println(message);
String choice = scanner.next();
if (choice.equals("y")){
return 1;
}else if (choice.equals("n")){
return 2;
}
return 0;
}
结果发现当我选择继续的时候,一切正常,选择不继续或者输入错误的时候,必须得输入两次才行,如图
困扰了较长时间才知道问题出在判断哪里,我的isContinue方法里有输入,然后判断那里是用isContinue这个方法去判断,那么第一个如果没判断到第二个还要执行一次
修改成以下代码即可解决:
private void loginMenu() {
int count = 0;
User user = null;
while (true) {
System.out.println("请输入姓名");
String name = scanner.next();
System.out.println("请输入密码");
String psw = scanner.next();
user = new User(0, name, psw, 0, 0);
if (userBiz.login(user)==-1) {
System.out.println("用户不存在");
count++;
if(count==3){
System.out.println("错误次数已达上限,程序退出");
exit(0);
}
System.out.println("还有"+(3-count)+"次机会");
while(true){
int res = myUtil.isContinue("是否还要继续");
if(res==1){
break;
} else if (res==2) {
return;
} else {
System.out.println("输入错误,请重新输入");
}
}
} else if (userBiz.login(user)==-2){
System.out.println("密码错误");
count++;
if(count==3){
System.out.println("错误次数已达上限,程序退出");
exit(0);
}
System.out.println("还有"+(3-count)+"次机会");
while(true){
int res = myUtil.isContinue("是否还要继续");
if(res==1){
break;
} else if (res==2) {
return;
} else {
System.out.println("输入错误,请重新输入");
}
}
}else if (userBiz.login(user)==-3){
System.out.println("登陆成功");
selfid = userBiz.selectByName(name).getId();
userSelfMainMenu();
}
}
}