2

我有一个文本 (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() 时,会出现“未捕获”(java.util.InputMismatchException)异常。

我究竟做错了什么?

谢谢你的任何提示。

4

3 回答 3

3

是否与Locale您正在解析相关的内容doubles

来自http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html的引用

此类的一个实例能够扫描标准格式以及扫描仪区域设置格式的数字。扫描仪的初始语言环境是Locale.getDefault()方法返回的值;它可以通过该useLocale(java.util.Locale)方法进行更改。

因此,例如,这可能会有所帮助:

scanner.useLocale(Locale.ENGLISH);
于 2012-05-31T10:18:08.487 回答
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);
}
于 2012-05-31T10:08:09.233 回答
0

执行程序时,请尝试使用逗号而不是点:

1,0 1,2 2

0,9 1,0 10

50,4 9,2 20
于 2014-02-05T21:25:15.930 回答