在Scanner类中有nextInt、nextDouble、nextfloat等这种扫描输入区中输入的数字
还有nextLint、next、扫面输入区中输入的字符串字符
初学Java,遇到了这样的问题,调用了nextInt()方法,接着直接调用了nextLine()方法,控制台输出错误,将接下来的两行输出语句直接书输出
PostGraduate Pg = new PostGraduate();
Pg.set姓名();
Pg.set学号();
Pg.set导师姓名();
Pg.set研究方向();
public void set学号() {
System.out.print("请输入学号:");
this.学号 = sender.nextInt();
}
public void set导师姓名() {
System.out.print("请输入导师姓名:");
this.导师姓名 = sender.nextLine();
}
这是三个方法在执行完输入学号之后,控制台直接输出
经过擦资料与询问,终于知道,nextInt只将缓存区中的数字提取并执行响应的赋值操作,但是不会将用户输入的回车取出,也就是当程序执行到set导师姓名的时候,缓冲区的回车赋值给了对应的变量,因此并不会让用户输入而是直接执行下一个方法;
解决办法:
public void set导师姓名() {
System.out.print("请输入导师姓名:");
sender.nextLine();
this.导师姓名 = sender.nextLine();
}
1.先扫描一遍输入区然后正式输入;
2.改用next当作输入接口;