使用具有分隔符的扫描仪

时间:2015-10-13 17:40:25

标签: java arrays java.util.scanner delimiter

我在使用如下输入扫描和存储数据方面遇到了一些问题:

  

34 56 = 22 67 = 81 75
  95 34
  95 33
  95 32

" ="分隔符分隔3个完全不同的坐标。我必须将最后一个坐标块放入一个数组中,但我不能将它放到前两个坐标上。有谁可以帮助我吗?

我创建了一个类似于下面的while循环。我想要从这个输入创建的是起始坐标(前两个数字),结束坐标(“=”符号之间的数字旁边),以及其余坐标与“\ n”分开的数组。 我的代码只允许我读取第一行中的坐标并将其存储在一个坐标起始对象中。我想将它们分成不同的对象/数组。

Scanner in = new Scanner(System.in);
    in.useDelimiter("=");
    while(in.hasNext()){
        Scanner coordinatesScanner = new Scanner(in.next());
        int coordinateX = coordinatesScanner.nextInt();
        int coordinateY = coordinatesScanner.nextInt();
        start = new Coordinates(coordinateX,coordinateY);
        out.printf("%d %d", start.x, start.y);
    }

1 个答案:

答案 0 :(得分:1)

您可以使用Scanner.useDelimiter更改分隔符,并使用正则表达式接受=以及作为分隔符的空格:

Scanner scanner = new Scanner(...);
scanner.useDelimiter("\\s|=");