73e*_*est 7 java java.util.scanner
我正在尝试使用Java中的Scanner类扫描负数.
我有这个输入文件:
1
-1,2,3
我的代码如下:
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);
Run Code Online (Sandbox Code Playgroud)
我的预期输出应该是
1
-1
相反,我得到一个错误(类型不匹配).
当我做
String a = input.next();
Run Code Online (Sandbox Code Playgroud)
代替
int a = input.nextInt();
Run Code Online (Sandbox Code Playgroud)
我不再得到错误而是得到了
1
-
分隔符是逗号或0或更多空格('\ s')字符.的*意思是"0个或多个".该Scanner发现为"0或多个"空白的字符之间-和1,所以它拆分这些字符,最终导致输入匹配异常.
您将希望将一个或多个空白字符作为分隔符,因此将其更改*为a +以反映该意图.
input.useDelimiter(",|\\s+");
Run Code Online (Sandbox Code Playgroud)
进行此更改时,我得到您的预期输出:
1
-1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3854 次 |
| 最近记录: |