Next() Nextline() hasNext()区别

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()移动。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/BKKBjams/article/details/107115289
今日推荐