扫描仪不会扫描负数
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
我正在尝试使用 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