hasNextDouble()在Java中读取文件时返回false
我试图从一个文件中读取矩阵数据,但我无法找出错误所在。这是不起作用的代码:hasNextDouble()在Java中读取文件时返回false,java,file,double,Java,File,Double,我试图从一个文件中读取矩阵数据,但我无法找出错误所在。这是不起作用的代码: protected static double[][] getArrayFromFile(int new_rows, int new_cols, String file) { double[][] A = new double[new_rows][new_cols]; try { Scanner fileR
protected static double[][] getArrayFromFile(int new_rows, int new_cols,
String file)
{
double[][] A = new double[new_rows][new_cols];
try {
Scanner fileReader = new Scanner(new File(file));
for (int i = 0; i < new_rows; i++)
for (int j = 0; j < new_cols; j++)
{
if(fileReader.hasNextDouble())
A[i][j] = fileReader.nextDouble();
else
{
System.out.println("missing numbers in file");
break;
}
}
fileReader.close();
}
catch (FileNotFoundException e1) {
e1.printStackTrace();
}
return A;
}
我已经用了很长时间的程序编写了<编辑 这是我试图读取的文件:
23.0 0.84825
188.5 6.87425
269.0 10.9595
321.0 13.08725
考虑到getArrayFrom文件会打开文件本身,因此区域设置建议似乎更可能出现在您认为您在文件中的位置 我建议插入行
fileReader.useLocale(Locale.US)声明和初始化fileReader后立即执行代码>。这将强制区域设置为小数点为“”的区域设置,这是解析数据所必需的
或者,找出默认语言环境中的小数点,并编辑文本文件以使用该小数点。um。。。。文本文件好吗?或者至少是文件的开头和接下来的10-20行数据。hasNextDouble()
返回false表示您不在文件中的位置。这真的很简单。扫描器不会将您的数据识别为双精度数据,可能是由于区域设置的差异?我使用代码设置了一个测试程序,并使用输入文件中数据的复制粘贴将其运行了4行2列。它运行得很好。这支持区域设置假设。我添加了这一行:fileReader.useLocale(Locale.GERMANY)
在fileReader声明之后,立即复制该问题。这就解决了问题。我还需要将java.util.Locale添加到导入的包中。谢谢大家的回答!
23.0 0.84825
188.5 6.87425
269.0 10.9595
321.0 13.08725