2

我正在使用 aScanner来读取如下所示的字符串:

"1.0, 1, 3.0, 4, 2.0, 6"

这是一个双精度数,后跟一个 int 等,用逗号分隔。

我设置了我的扫描仪

Scanner in = new Scanner(string);

然后像这样使用它:

newNode.coefficient = in.nextDouble();
newNode.exponent = in.nextInt();

当字符串不包含逗号时,它工作正常。但是我的字符串有逗号,如上所示。

如何跳过逗号?

我不想拆分字符串(即使格式保持不变,字符串的长度也会有所不同),所以请不要向我解释。

4

2 回答 2

2

设置扫描仪的分隔符以接受逗号:

Scanner input = new Scanner(System.in).useDelimiter(", ");

默认分隔符是空格,但您可以通过useDelimiter().

此外,由于分隔符是正则表达式,因此您也可以将逗号后面的空格设为可选:

Scanner input = new Scanner(System.in).useDelimiter(", ?");
于 2016-04-13T03:47:35.773 回答
0

从扫描仪文档:

扫描仪还可以使用除空格以外的分隔符。此示例从字符串中读取多个项目:

String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();

您可以简单地将扫描仪设置为使用逗号-空格组合作为分隔符。

in.useDelimiter("\\s*,\\s*");
于 2016-04-13T03:48:22.803 回答