Java中nextLine()与其他next(),nextInt(),nextFloat()的区别

最近学习Java过程中遇到一个小问题,就是用nextInt()来接收输入内容时,按完回车之后会产生后面的内容无法输入的结果,因此来做个小记录。有不足的地方还请大家指出。

区别一  读取返回结果

nextInt()读取结果为int类型

nextFloat()读取结果为float类型

next()读取结果为String类型

next Line()读取结果为String类型

区别二  读取方式

  next(),nextInt(),nextFloat()看到空格符或回车符都认为读取结束,此时不会读取回车符。

  nextLine()只以回车符为结束,并且会读取回车符。

  请看以下例子:

public void logIn(){
Scanner input = new Scanner(System.in);
System.out.println("请输入ID:");
int id = input.nextInt();
System.out.println("请输入密码:");
String pass = input.nextLine();
}

  输出结果如图:

Java中nextLine()与其他next(),nextInt(),nextFloat()的区别

这里我们输入ID之后,按回车键,系统弹出"请输入密码:"后并没有等待控制台输入,而是直接结束了程序。

原因就是当我们输入完ID并且按下回车之后,nextInt()方法只会读取‘123’,而不会读取回车;因此回车符会被留在此处。

当执行到nextLine()方法时,nextLine()方法会读取回车,并且以回车符为结束,因此该方法会在我们输入之前就读取到了上次我们输入的回车符,于是该方法就认为已经执行完毕,所以我们没有输入的机会。

解决办法

我们可以都使用nextLine()方法来读取输入,然后再进行接收数据的类型转换,这样就可以避免上述的小BUG。

其他方法后续补充。

上一篇:oracle job 定时执行 存储过程


下一篇:【CF437C】The Child and Toy