Java 使用扫描器将浮点数从.txt读取到浮点矩阵
我被一个非常简单的练习绊住了,在代码中找不到错误 我有一个如下所示的文本文件: 三, 230.24415 134.34523 166.47234 192.02849 138.28403 294.12875 198.97356 256.49284 140.41526 第一个(整数)数字表示矩阵维度,在本例中为3x3,以下值为小数点后5位的浮点数,由空格和新行分隔,必须在矩阵中设置这些浮点数才能使用它们。这是这次演习的主要问题 代码如下:Java 使用扫描器将浮点数从.txt读取到浮点矩阵,java,file,matrix,Java,File,Matrix,我被一个非常简单的练习绊住了,在代码中找不到错误 我有一个如下所示的文本文件: 三, 230.24415 134.34523 166.47234 192.02849 138.28403 294.12875 198.97356 256.49284 140.41526 第一个(整数)数字表示矩阵维度,在本例中为3x3,以下值为小数点后5位的浮点数,由空格和新行分隔,必须在矩阵中设置这些浮点数才能使用它们。这是这次演习的主要问题 代码如下: import java.io.File; import ja
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class fileToMatrix {
public static void main(String[] args) throws IOException {
File f = new File("./src/floatMat.txt");
Scanner s = null;
int m=-1;
float value = -0.1f;
try {
s = new Scanner(f);
if(s.hasNextLine()) { // Firstly, read the dimension number
m = s.nextInt();
System.out.println("Dimension of the matrix = " + m + "x" + m);
}
float [][] mat = new float[m][m]; //creates a matrix of dimension m
for(int i=0; i< m; i++){ //and initializes to 0
for(int j=0; j< m; j++){
mat[i][j] = 0.0f;
}
}
if(s.hasNextLine()) {
for(int r=0; r< m; r++){
for(int c=0; c< m; c++){
value = s.nextFloat(); //PROBABLY HERE'S THE MISTAKE!!!!!
mat[r][c] = value; //set value on the current cell of the array
}
}
}
for(int i=0; i< m; i++){ //print the matrix
for(int j=0; j< m; j++){
System.out.print(mat[i][j]+ " ");
}
System.out.println();
}
} catch (Exception ex) {
System.out.println("Message catch: " + ex.getMessage());
} finally {
if (s != null)
s.close();
}
}
}
导入java.io.File;
导入java.io.IOException;
导入java.util.Scanner;
公共类fileToMatrix{
公共静态void main(字符串[]args)引发IOException{
文件f=新文件(“./src/floatMat.txt”);
扫描器s=null;
int m=-1;
浮动值=-0.1f;
试一试{
s=新扫描仪(f);
如果(s.hasNextLine()){//首先,读取维度号
m=s.nextInt();
System.out.println(“矩阵的尺寸=”+m+“x”+m);
}
float[][]mat=new float[m][m];//创建维度为m的矩阵
对于(int i=0;i
我确信这个错误是在我的注释中出现的,因为它似乎无法识别my.txt的浮点数。事实上,如果我把整数放在我的.txt文件中,它几乎可以工作
它只打印“矩阵的维数=3x3”,然后打印“消息捕获:null”,它甚至不打印填充的矩阵
谢谢大家,我感谢你们的帮助 替换
System.out.println(“消息捕获:+ex.getMessage())代码>带有例如printStackTrace()代码>检查异常是什么以及哪一行抛出它。我确实需要前进到下一行。同样在if(s.hasNextLine())
之前,需要放置s.nextLine()
。但它仍然不起作用,主要问题是程序没有读取任何浮点数。。。谢谢你,@EJP
if(s.hasNextLine()) {
for(int r=0; r< m; r++){
for(int c=0; c< m; c++){
value = s.nextFloat(); //PROBABLY HERE'S THE MISTAKE!!!!!
mat[r][c] = value; //set value on the current cell of the array
}
}
}