今天用循环来运行if嵌套判断nextline和nextint 出现了第二次循环被nextline空值替代的问题,原因是第一次循环nextint最后的回车符未被保留在里面,残存在了缓冲区,到了第二次循环中,nextline接收到了缓冲区中的回车符,所以导致第二次循环被空值给替代。
解决办法是用next()替代nextLine()
public class loginTest {
public static void main(String[] args) {
login usr = new login();
Scanner sc = new Scanner(System.in);
String username;
for (int i = 1; i < 4; i++) {
System.out.println("请输入用户名:");
username = sc.nextLine();
if (usr.username.equals(username)) {
System.out.println("请输入密码:");
int password = sc.nextInt();
if (password == usr.password) {
System.out.println("恭喜登陆成功!");
} else {
if (i < 3) {
System.out.println("您输入的密码有误,请重新输入");
} else {
System.out.println("您的登陆次数已用完,请重新访问本网页");
}
}
} else {
if (i < 3) {
System.out.println("您输入的用户名有误,请重新输入");
} else {
System.out.println("您的登陆次数已用完,请重新访问本网页");
}
}
}
}