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