【问题标题】:How to read in doubles and ints from a string without reading commas如何在不读取逗号的情况下从字符串中读取双精度和整数
【发布时间】:2016-04-13 03:38:35
【问题描述】:

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

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

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

我设置了我的扫描仪

Scanner in = new Scanner(string);

然后像这样使用它:

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

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

如何跳过逗号?

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

【问题讨论】:

  • 设置扫描仪的delimiter 包含逗号。

标签: java comma dnode


【解决方案1】:

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

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

默认分隔符是空格,但您可以通过useDelimiter() 将其设置为其他内容。

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

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

【讨论】:

    【解决方案2】:

    来自扫描仪文档:

    扫描器还可以使用空格以外的分隔符。这个例子从一个字符串中读取了几个项目:

    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*");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 2014-03-14
      • 2016-06-29
      • 1970-01-01
      相关资源
      最近更新 更多