为什么下段java代码nextLine()跳过输入和if判断直接打印else内的内容?
publicclassDemo{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);...
public class Demo {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = scan.next(); //控制台读取用户名
if (name.equals("jack")) {
System.out.println("请输入密码:");
while (true) {
String psw = scan.nextLine(); //控制台读取密码
if (psw.equals("rose123")) {
System.err.println("登入成功!");
} else {
System.err.println("密码输入错误!请重新输入:");
}
}
} else {
System.out.println("用户名不存在,请重新输入:");
}
}
} 展开
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = scan.next(); //控制台读取用户名
if (name.equals("jack")) {
System.out.println("请输入密码:");
while (true) {
String psw = scan.nextLine(); //控制台读取密码
if (psw.equals("rose123")) {
System.err.println("登入成功!");
} else {
System.err.println("密码输入错误!请重新输入:");
}
}
} else {
System.out.println("用户名不存在,请重新输入:");
}
}
} 展开
2个回答
2018-01-31 · 百度知道合伙人官方认证企业
尚学堂科技有限公司
北京尚学堂科技有限公司是一家从事JAVA、大数据、web前端、网络在线教育、互联网架构师、Android、ios技术开发、咨询为一体的软件公司。公司由海外留学人员和国内IT人士创建。
向TA提问
关注
展开全部
java中Scanner类中:next()或nextInt()与nextLine()方法联用而且用在nextLine的前面时。nextLine会把前者的结束符“换行符”作为字符串读入,进而不需要从键盘输入字符串nextLine已经转向下一条语句执行。
处理方法,(在next()方法使用Enter键之后,填充一个无用的nextLine()):
public class Demo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = scan.next(); // 控制台读取用户名
if (name.equals("jack")) {
System.out.println("请输入密码:");
while (true) {
// 填充一个无用的nextLine()
String psw = scan.nextLine();
String psw1 = scan.nextLine(); // 控制台读取密码
if (psw1.equals("rose123")) {
System.err.println("登入成功!");
} else {
System.err.println("密码输入错误!请重新输入:");
}
}
} else {
System.out.println("用户名不存在,请重新输入:");
}
}
}
运行效果:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询