A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Main(主方法){
创建键盘录入对象;
Int x=0;
whlie (sc.hasNextInt()){
     i = sc.nextInt();
     System.out.print(i+"  ");
}}
发现输入多个整数用空格隔开Enter后可以输出所有整数,但是键盘录入不会结束,问题怎样让代码输入一行就结束键盘录入?我也试到一个可以在while方法后面加String str = sc.nextLine();在最后输入非数字符就结束的方法,可这不是我要的。

11 个回复

倒序浏览
nextLine()   :遇到回车换行就结束了!
回复 使用道具 举报
试到一个可以在while方法后面加String
回复 使用道具 举报
小鹿 发表于 2015-12-18 23:33
nextLine()   :遇到回车换行就结束了!

怎么加?
回复 使用道具 举报
kjkjkjh 发表于 2015-12-18 23:44
试到一个可以在while方法后面加String

我问题中就提到了 可是要以字母才能结束,这不是我想要的。我想利用Scanner以空格作为分割符的特点来一次接收多个整数,不想自己用空格自己切
回复 使用道具 举报
增加一个判断
回复 使用道具 举报
Scanner使用内置的正则来匹配数据类型。也就是说它内置的,不一定是我们需要的。
就比如这个hasNextInt(),它吃下去的字符,就不会全部是数组。它是经过内置的正则匹配后,再把非ascii改成ascii。然后通过Integer.paseInt()。来转化成数字。

你的空格,和换行符,就这么无情地被吃了。

解决方法:
1.使用hasNextLine()进行外层判断。
2.由于你还是想一次输入完毕。那么hasNextInt()保持不变。


我没有试验,祝你成功。回头给我说一声。
回复 使用道具 举报
我想了一下,这样可能不行。

把hasNextLine放在hasNextInt里面。其他不变,应该就行了。
回复 使用道具 举报
王晓亮 来自手机 中级黑马 2015-12-19 11:52:51
9#
回复 使用道具 举报
尝试用break  , equals !

点评

break试过只获取单个,equals怎么试?  发表于 2015-12-19 22:39
回复 使用道具 举报
青菜市场 来自手机 中级黑马 2015-12-19 22:48:06
11#
hdhunter 发表于 2015-12-19 11:00
我想了一下,这样可能不行。

把hasNextLine放在hasNextInt里面。其他不变,应该就行了。 ...

外层加hasNextLine判断无效,放在hasNextInt里面是指重写hasNextInt方法还是在while 循环里面?如果是里面是无效的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马