我有一个文本(file.txt)文件。此文件已加载到扫描仪内。
在文件中有各种行,每行有两个双精度数和一个整数值除以空格。
像这样:
1.0 1.2 2
0.9 1.0 10
50.4 9.2 20
我需要完成三个阵列。
每个数组对应一个列。类似的东西:
double[] x = {1.0,0.9,50.4}
double[] y = {1.2,1.0,9.2}
double[] z = {2,10,20}
我尝试使用此代码:
double x[]= new double [3];
double y[]= new double [3];
double z[]= new double [3];
File f = new File(ClassLoader.getSystemResource(file.txt).toURI());
Scanner sc = new Scanner(f);
for (int i=0;j<3;i++){
x[i] = sc.nextDouble();
y[i] = sc.nextDouble();
z[i] = sc.nextDouble();
}
但是当第一个nextDouble()执行“uncaught”(java.util.InputMismatchException)异常时。
我做错了什么?
感谢您的任何提示。
答案 0 :(得分:3)
是否与您正在解析Locale
的{{1}}相关?
来自http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html
的引文此类的实例能够扫描标准格式的数字以及扫描程序语言环境的格式。扫描程序的初始语言环境是
doubles
方法返回的值;它可以通过Locale.getDefault()
方法更改。
因此,举例来说,这可能有所帮助:
useLocale(java.util.Locale)
答案 1 :(得分:1)
如果sc.next()
适用于您,则需要解析输出,因为它的类型为String
,因此需要InputMismatchException
。
尝试:
for (int i=0;j<3;i++) {
String s;
s = sc.next();
x[i] = Double.parseDouble(s);
s = sc.next();
y[i] = Double.parseDouble(s);
s = sc.next();
z[i] = Double.parseDouble(s);
}
答案 2 :(得分:0)
执行程序时,请尝试使用逗号而不是点:
1,0 1,2 2
0,9 1,0 10
50,4 9,2 20