扫描仪不会扫描负数

Scanner will not scan negative numbers

我正在尝试使用 Java 中的扫描仪 class 扫描负数。

我有这个输入文件:

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 个或多个空白 ('\s') 字符。 * 表示“0 个或更多”。 Scanner-1 之间发现“0 个或多个”空白字符,因此它拆分了这些字符,最终导致输入不匹配异常。

您需要 1 个或多个空白字符作为分隔符,因此将 * 更改为 + 以反映该意图。

input.useDelimiter(",|\s+");

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

1
-1