我正在尝试从文件中读取矩阵数据,但无法找出问题所在。这是不起作用的代码:protected static double[][] getArrayFromFile(int new_rows, int
我正在尝试从文件中读取矩阵数据,但无法找出问题所在。以下是无法正常工作的代码:
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;
}
此方法接收一个文件以及要读取的列数和行数。它一点也不可靠,但如果您正确输入参数,它应该可以工作。在测试它并打印矩阵后,我只得到零。我已经将绝对路径传递给数据文件,并且我很确定程序正在找到它,因为当我传递不存在的路径时它会显示错误消息。运行调试时,我发现它 fileReader.hasNextDouble()
总是返回 false,因此没有读取任何数字。为什么会这样?我有另一种从字符串读取文件的方法,它看起来就像这样并且运行完美。
这里是:
protected double[][] getArrayFromString(int new_rows, int new_cols,
String numbers)
{
Scanner stringReader = new Scanner(numbers);
stringReader.useDelimiter("[^\\p{Alnum},\\.-]");
double[][] A = new double[new_rows][new_cols];
for (int i = 0; i < new_rows; i++)
for (int j = 0; j < new_cols; j++)
{
if(stringReader.hasNextDouble())
A[i][j] = stringReader.nextDouble();
else
{
stringReader.close();
throw new RuntimeException("\n"+""
+ "missing numbers on string");
}
}
stringReader.close();
return A;
}
编程了很长时间 C ,但刚刚开始使用 JAVA,所以也许我做了一些愚蠢的事情。有人能看出我犯的错误吗?
编辑
这是我正在尝试读取的文件:
23.0 0.84825
188.5 6.87425
269.0 10.9595
321.0 13.08725
当从 Java 中的文件读取时 hasNextDouble() 返回 false
下载声明:
本站所有软件和资料均为软件作者提供或网友推荐发布而来,仅供学习和研究使用,不得用于任何商业用途。如本站不慎侵犯你的版权请联系我,我将及时处理,并撤下相关内容!