我试图使用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 -
发布于 2015-01-21 20:21:39
分隔符是逗号或0或更多空格('\s')字符。*的意思是"0或更多“。Scanner在-和1之间找到了"0或更多“空格字符,因此它拆分了这些字符,最终导致输入不匹配异常。
您将希望有一个或多个空格字符作为分隔符,因此将*更改为+以反映这一意图。
input.useDelimiter(",|\\s+");在进行此更改时,我将得到您的预期输出:
1
-1https://stackoverflow.com/questions/28076076
复制相似问题