- hasNext() 是检测 还有没有下一个输入
- next() 是指针移动到当前下标,并取出下一个输入
- nextLine() 把指针移动到下一行 让然后取出当前这一行的输入
- hasNextLine() 是检测下一行有没有输入
在使用Scanner进行控制台输入时候,使用next()方法输出,但是这种方法存在弊端,比如使用nextInt()方法,但是输入一个字符串类型,就会抛出InputMisMatchException
异常。
InputMismatchException
异常是输入不匹配异常,即输入的值数据类型与设置的值数据类型不能匹配。
产生InputMismatchException
异常的原因是:
nextLine()
不能用在nextInt()
后面。
因为nextLine()方法是返回的是Enter键之前的所有字符,在使用了nextInt() 方法之后在其后输入的空格键、Tab键或Enter键等视为分隔符或结束符,其仍在缓冲区内;若紧接着使用nextLine() ,则nextLine() 自动读取Enter等作为其结束符,则无法从键盘输入值,强行输入会报出InputMismatchException异常。
解决:
方法一:
可以在nextInt()后面加上一个nextLine()用于过滤其后面的Enter等结束符。
方法二:
可以不使用nextLine()方法,直接使用next()方法代替。