首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扫描仪不会扫描负数

扫描仪不会扫描负数
EN

Stack Overflow用户
提问于 2015-01-21 20:17:32
回答 1查看 6.2K关注 0票数 7

我试图使用Java中的Scanner类扫描一个负数。

我有一个输入文件:

1 -1,2,3,4

我的代码如下:

代码语言:javascript
复制
    Scanner input = new Scanner(new File("data/input.txt"));
    int i = input.nextInt();
    input.useDelimiter(",|\\s*"); //for future use
    int a = input.nextInt();
    System.out.println(i);
    System.out.println(a);

我的预期产出应该是

1 -1

相反,我得到一个错误(类型错配)。

当我这么做

代码语言:javascript
复制
String a = input.next();

而不是

代码语言:javascript
复制
int a = input.nextInt();

我不再犯错误,而是得到了

1 -

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-21 20:21:39

分隔符是逗号或0或更多空格('\s')字符。*的意思是"0或更多“。Scanner-1之间找到了"0或更多“空格字符,因此它拆分了这些字符,最终导致输入不匹配异常。

您将希望有一个或多个空格字符作为分隔符,因此将*更改为+以反映这一意图。

代码语言:javascript
复制
input.useDelimiter(",|\\s+");

在进行此更改时,我将得到您的预期输出:

代码语言:javascript
复制
1
-1
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28076076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档