官方解释:
nextInt(): it only reads the int value, nextInt() places the cursor in the same line after reading the input.
next():read the input only till the space. It can't read two words separated by space. Also, next() places the cursor in the same line after reading the input.
nextLine():reads input including space between the words (that is, it reads till the end of line \n). Once the input is read, nextLine() positions the cursor in the next line.
此处,cursor意思为光标。
可以看出nextInt()和next() 读取到空格时就会结束读取,不管有没有回车,nextInt()对应int类型,next()对应字符串类型
可以看出nextLine() 是可以读取到空格的,只有当它读取到回车的时候才会结束
当nextInt()或next()与nextLine() 同时使用时:
可见当nextInt()或next()与nextLine() 一起使用时,因为nextInt()和next() 只会读取有效数值或字符串,剩下的"\n"(回车)还没有读取,并将光标放在本行中,而nextLine()则会读取"\n"(回车),把光标移到下一行并结束输入。
当遇到空格时结束。若输入中有空格,此时nextLine()相当于读取从前面留下的数据开始的后面的内容,因此输出的时候会带有空格。
若想在nextInt()或next()后读取一行,需要加一行sc.nextLine(),相当于让sc.nextLine()读取掉上一行输入的回车(可以理解为消耗掉),此时下一行的nextLine()才会继续接受输入。
不建议nextInt()或next()与nextLine()混用,可都用nextLine(),不过读数字时需要使用Integer的parseInt方法将字符串转成int