next类和hasNext方法遇到缓冲区没数据时,会阻塞,等待输入后next类会读取,hasNext会返回true 1)nextLine nextLine()方法返回的是"\n"之前的所有字符,它是可以得到带空格的字符串的。 nextLine()方法的结束符只是"\n"(会吃掉这个"\n") 在下一次使用nextLine读取时,nextLine会直接读取有效字符,不用再去除有效字符后的"\n"符号。 2)next next()会自动消去有效字符前的空格,next()在输入有效字符之后,只返回输入的字符,不能得到带空格的字符串。 将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符(不会吃掉Enter、tab、空格)。 所以如果next()使用Enter符作为结束符,后面再使用nextLine()时,nextLine()会得到next()后的"\n"符。这时再使用 一次nextLine才可以得到有效的数据。 3)nextInt、nextFloat、nextDoule nextInt()只读取数值,其余和next()一样。同理,next()、nextDouble() 、 nextFloat()、nextInt() 读取后,其实还有一个回车未读取出来,若此时后面跟上一个nextLine()读取的是该回车。 总结:如果next()后如果要使用nextLine(),要先用一次nextLine去除"\n",再使用一次nextLine读取数据。而nextLine后使用next等不需要去除"\n" 使用Nextline()方法时,不将空格看作是两个字符串的间隔,而是看作字符串的一部分,返回时,它作为String的类型一并返回: 使用next() 方法时,将空格看作是两个字符串 的间隔 使用nextInt()方法时,与next()方法类似,只是它的返回值是int类型的,仍将空格看作是两个字符串 的间隔 hasNextInt() 用hasNextInt()作为判断下一个输入是否为数字需要配合next()方法使用 hasNextInt()函数大体意思表示scanner当前的标记的输入是否为int,并不会自动的移动标记(只有被next类方法调用后才会移动) 例如实现一个判断当前到输入是否为数字,不是的话提示输入数字。若是以下代码:当输入的不是数字时,会一直输出请输入数字。 要实现hasNextInt的读取的标记位置的改变,可以用scanner.next()移动。