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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Pheinogin 于 2014-9-30 21:20 编辑

1. 如果从文件中读取数据
例如有一个名为test.txt的文件,包含了一行内容:
34 567
Scanner input= new Scanner(new File("test.txt"));
int intV=input.nextInt();
String sLine =input.nextLine();
这时候intV的值为34,而sLine包含的字符是‘ ’、‘5’、‘6’、‘7’。

2、当键盘输入的时候,先敲34,然后回车,然后敲567,然后回车,还是下面的代码,
Scanner input= new Scanner(System.in);
int intV=input.nextInt();
String sLine =input.nextLine();

这个时候intV为34,而sLine是一个空字符串。

好的,现在问题来了,请问这是什么样的情况,还有学挖掘机技术去哪家比较强……

10 个回复

倒序浏览
第一个:空格不是int类型   第二个:567不是String类型
回复 使用道具 举报
nextInt(),获取的是第一个输入单元,这个单元要是int行,否则会报错;nextLine()获取的是一行数据,它是以Stirng类型进行的。
回复 使用道具 举报
挖掘机技术……
回复 使用道具 举报
getone 来自手机 中级黑马 2014-10-2 14:41:23
报纸
我的基础测试题也涉及到scanner,想问一下,如果输入的是带空格的字符串,用scanner怎么获取?另外,挖掘机什么的要找副校长
回复 使用道具 举报
本帖最后由 yueyazhishang 于 2014-10-3 14:10 编辑
getone 发表于 2014-10-2 14:41
我的基础测试题也涉及到scanner,想问一下,如果输入的是带空格的字符串,用scanner怎么获取?另外,挖掘机 ...

用split截取
回复 使用道具 举报
ooEye 中级黑马 2014-10-4 20:41:32
7#
这个应该跟C语言有相似之处:1.nextInt()是输入整数,指针读到4之后的空格之后发现“34_”(_ 表示空格哈)不是数字,于是指针停在了空格的位置,所以intV值为34,然后读取nextLine()读取一行,读取的就是后面的空格和567,即sLine包含的字符是 ' '、‘5’、‘6’、‘7’;2.为什么第二个sLine是一个空字符串呢?这是应为nextLine()读取的是一行,读到换行符就结束了(换行符不包含在字符串内),你敲完34后回车,nextLine()读到34和回车符不是数字,就将34存到intV中,第二次读到了回车符,结束读取的这一行,所以nextLine()读到的是一个没有任何字符的空行
回复 使用道具 举报
getone 中级黑马 2014-10-9 09:59:18
8#

问题解决,非常感谢!
回复 使用道具 举报
getone 发表于 2014-10-9 09:59
问题解决,非常感谢!

一起学习,共同进步
回复 使用道具 举报
zz_job 中级黑马 2014-10-10 00:46:36
10#
正解是这样的==>34存入intV没有问题  但是你回车的那一次  回车被当作字符串中的内容存入了sLine中   你用cmd输入应该就不会出现这种情况  但是用Eclipse会因为软件的原因使你还能打出567   so...  想解决这个问题  你可以再new一个Scanner对象出来  或者在intV后面加一个换行输出  这样就好了  嘿嘿   非常经典的问题呢
回复 使用道具 举报
zz_job 中级黑马 2014-10-10 00:57:06
11#
我已经非常努力的回帖了...为咩没人给我加技术分啊...泪奔.....      更正一下==>34回车后..我的Eclipse不能再输入东西了,CMD也不行...不知道楼主怎么做到的  ;   又试了一下  中间加System.out.println();也不能实现...我回去翻一下代码...忘了中间加什么能实现了..呃...
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马