java 编程控制台输入的问题。

程序中,显示一条输入语句,后面读取2个数字,一共有两次(读取4个数字)为什么我这样连续输入5个数字,回车,直接就出现了计算结果(而不是等下一条输入语句显示:请输入poin... 程序中,显示一条输入语句,后面读取2个数字,一共有两次(读取4个数字)
为什么我这样连续输入5个数字,回车,直接就出现了计算结果(而不是等下一条输入语句显示:请输入 point2,再读取2个数字?)
请问控制台读取输入的原理是什么?我输入的第5个数字88,去哪里了呢?为什么不报错。手头书上没有,求猛男讲解一下,万分感谢!
展开
 我来答
匿名用户
2019-06-15
展开全部
连续输入,无论输入多少都会被读取,存放在一个叫做CharBuffer(JDK源码中使用的CharBuffer,看了源码你就会知道)的字符缓存中。
当你点击回车键后,Scanner开始处理你输入的字符,默认分隔标记是空格,如果你使用的next或nextInt或nextDouble这类方法,Scanner会以空格为标记分割这些字符,并转换为相应的数据类型,返回值。你一次就输入了5个数字,4次nextDouble都能获得数据,就会直接执行全部的nextDouble调用。如果输入的数字个数不够4个,没有获得数据的nextDouble方法会等待你的输入。够了就直接返回值。所以直接全部执行了。第5个数字还在那个CharBuffer中。
追问
谢谢
追答
不是输入造成的错误,是你的第2个for中的i的初始值错了。
改成:int i=numbers.length-1;
microroom
科技发烧友

2019-06-15 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1668万
展开全部
当你按回车后,所有在一行中输入的数据都放进了键盘缓冲区中。以后每次读取的时候,如果键盘缓冲区剩余的数据满足要求的话,会直接从缓冲区中提取数据,不会等待你输入新的数据了。
追问
十分感谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式