背景
例:读取以下输入并进行存储
4
2 3 1 2
一开始用了nextInt()来读取第一行的输入,用nextLine()来读取第二行的数字串,想不到翻车了。
在nextInt(),next(),nextDouble(),nextFloat()方法与nextLine()连用并放在nextLine()前面时,就会出现如下错误:
原因
当nextInt()读取到一个数字之后,就执行了nextLine()方法,此时用户enter键(nextLine()方法只能是以enter键为结束符的),所以params里面并没有存到东西,导致了转整形的时候失败,出现报错。
解决办法
应该统一用nextLine()进行读取,然后再进行引用类型的转换
nextInt()与nextLine()方法的区别
next()方法在读取内容时,会过滤掉有效字符前面的无效字符,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其过滤掉;只有在读取到有效字符之后,next()方法才将其后的空格键、Tab键或Enter键等视为结束符;所以next()方法不能得到带空格的字符串。
nextLine()方法字面上有扫描一整行的意思,它的结束符只能是Enter键,即nextLine()方法返回的是Enter键之前没有被读取的所有字符,它是可以得到带空格的字符串的。