从文件中协调Java

时间:2013-12-30 02:46:07

标签: java regex

我尝试从文件中读取一些坐标并将其xy值作为整数,以便计算出两点之间的距离。我设法使用Scanner从每一行中获取一些数字,但现在这个方法似乎是将每个数字作为一个单独的数字读取。因此,当我使用以下样本数据时:

(25, 4) (1, -6)

我最终得到了:

(2, 5) (4, 1)

我用来从文件中获取数字并输出答案的代码是:

import java.io.File;
import java.util.Scanner;

public class Main{
    public static void main(String[] args) throws Exception{
        File file = new File(args[0]);
        Scanner sc = new Scanner(file);
        sc.useDelimiter("\\D*");
        while(sc.hasNext()){
            double xOne = sc.nextInt();
            double yOne = sc.nextInt();
            double xTwo = sc.nextInt();
            double yTwo = sc.nextInt();
            sc.nextLine();
            System.out.println(xOne + "," + yOne + "," + xTwo + "," + yTwo);
            int d = (int)Math.sqrt(Math.pow((xTwo - xOne), 2) + Math.pow((yTwo - yOne), 2));
            System.out.println(d);
        }
        sc.close();
    }
}

1 个答案:

答案 0 :(得分:3)

正则表达式\D*匹配任何非数字序列,包括空数字。因为它匹配空字符串,所以您的扫描仪将一次读取一个字符。

sc.useDelimiter("\\D+");

代替。