我尝试从文件中读取一些坐标并将其x
和y
值作为整数,以便计算出两点之间的距离。我设法使用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();
}
}
答案 0 :(得分:3)
正则表达式\D*
匹配任何非数字序列,包括空数字。因为它匹配空字符串,所以您的扫描仪将一次读取一个字符。
写
sc.useDelimiter("\\D+");
代替。