扫描仪不会扫描负数

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

-

rge*_*man 8

分隔符是逗号或0或更多空格('\ s')字符.的*意思是"0个或多个".该Scanner发现为"0或多个"空白的字符之间-1,所以它拆分这些字符,最终导致输入匹配异常.

您将希望将一个或多个空白字符作为分隔符,因此将其更改*为a +以反映该意图.

input.useDelimiter(",|\\s+");
Run Code Online (Sandbox Code Playgroud)

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

1
-1
Run Code Online (Sandbox Code Playgroud)