nextline循环到第二次后,跳过了输入

这个是由于nextline 的存储方式决定的。

scanner.nextInt() 和 scanner.nextLine() 处理机制不一样:
用 nextInt()处理,我们在输入 4 按下空格后,会将 4 和 空格‘\r’ 存入缓存区,返回时返回 4,但是‘\r’会继续存在缓存区里面,在我们for循环时用scanner.nextLine() 读取时,发现缓存区里面有“\r”,那么跳过输入,直接将“\r”赋值给 str,然后在控制台输出换行。

nextline循环到第二次后,跳过了输入

用nextLine() 处理,会将 4 和 空格‘\r’ 存入缓存区,返回时返回 4,去除掉“\r”,那么在我们for循环时用scanner.nextLine() 读取时,会发现没有东西,就会让我们在控制台输入。

这就是为什么用nextInt()时会莫名其妙出现一个换行。

避免第二次 跳过输入,解决办法就是

用scanner.nextInt()替代scanner.nextline()

上一篇:Java题解——1008 数组元素循环右移问题(PAT乙级)


下一篇:Scanne第二次输入跳过问题