Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用扫描器将浮点数从.txt读取到浮点矩阵_Java_File_Matrix - Fatal编程技术网

Java 使用扫描器将浮点数从.txt读取到浮点矩阵

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

我被一个非常简单的练习绊住了,在代码中找不到错误

我有一个如下所示的文本文件:

三,

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 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
        }            
    }
}