java - 扫描仪不会扫描负数

标签 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

-

最佳答案

分隔符是逗号或 0 个或多个空白 ('\s') 字符。 * 表示“0 个或多个”。 Scanner-1 之间发现“0 个或多个”空白字符,因此它将这些字符拆分,最终导致输入不匹配异常。

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

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

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

1
-1

关于java - 扫描仪不会扫描负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28076076/

相关文章:

java - java 中的处理程序和 BiHandler : can we use the "returned" value of a BiHandler?

java - 如何在循环中使用多个条件来比较字符串的不同索引?

java - 使用扫描仪时如何跳过字符

java - 我如何在java中使用正则表达式提取

java - Selenium 中的 Actions 类不建议可用的方法

java - 在类或方法中实例化 Java Scanner

java - 从另一个包读取文件 - Java

java - 使用 Scanner 在 Java 中读取日期

java - Android WebView 获取本地存储值

java - 我不明白如何重置这个循环/扫描仪