【JAVA】Scanner的next()、nextInt()、nextLine()读取机制

nextInt():读取一个整数,以空格键、Tab键或Enter键等结束符结束。

PS:

  • 不会读走结束符!
  • 会自动跳过前面的结束符
  • 如果输入多个数字中间用空格隔开,则只会读取第一个数字,下个nextInt()将会直接读取数字跳过输入

例如:

输入“123”实际输入为“123\n”,nextInt只会读取123,\n”便留在缓存区等待


next():读取一个字符串,以空格键、Tab键或Enter键等结束符结束。

PS: 

  • 不会读走结束符!
  • 会自动跳过前面的结束符直到读取一个有效的字符串之后,next()方法才会将其后输入的空格键、Tab键或Enter键等视为结束符。

nextLine():读取一个字符串,以Enter键结束符结束。

PS:

  •  nextLine()的结束符只是Enter键!
  • nextLine()的结束符也会被nextLine()读取,但是它并不会作为方法返回值的一部分,只是单纯吸收!
  • 如果nextLine()之前用了nextInt() / nextDouble() / next() 等方法,这些方法遗留在缓冲区的空格字符就会被nextLine()读走,此时就会造成一个”数据无法读取”的现象,但其实不是的,它是有读取数据的,只不过它读取的是上一个nextInt() / nextDouble() / next() 等方法遗留下来的结束符!

你可能感兴趣的:(java,开发语言)