我正在尝试使用Java中的Scanner类扫描负数。
我有这个输入文件:
1
-1,2,3,4-
我的代码如下:
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
而是我收到错误(类型不匹配)。
当我这样做时
String a = input.next();
而不是
int a = input.nextInt();
我不再收到错误而是转而
1
-
答案 0 :(得分:8)
分隔符是逗号或0或更多空格(' \ s')字符。 *
表示" 0或更多"。 Scanner
找到" 0或更多" -
和1
之间的空格字符,因此会拆分这些字符,最终导致输入不匹配异常。
您希望将一个或多个空白字符作为分隔符,因此请将*
更改为+
以反映该意图。
input.useDelimiter(",|\\s+");
进行此更改时,我得到您的预期输出:
1
-1