扫描仪不会扫描负数

时间:2015-01-21 20:17:32

标签: java java.util.scanner

我正在尝试使用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

     

-

1 个答案:

答案 0 :(得分:8)

分隔符是逗号或0或更多空格(' \ s')字符。 *表示" 0或更多"。 Scanner找到" 0或更多" -1之间的空格字符,因此会拆分这些字符,最终导致输入不匹配异常。

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

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

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

1
-1