从txt文件中读取矩阵并保存到2D数组

时间:2017-08-02 11:59:20

标签: java arrays file matrix

我使用下面的代码从文件中读取矩阵并且它运行良好但现在我需要按空格分割行和列以成为矩阵,以便在另一个函数中使用它。不幸的是我不知道如何处理ArrayList,所以任何人都可以帮我编辑这段代码吗?

private  static void read(Matrix matrix) throws UnsupportedEncodingException, IOException {
    String line = null;
    List<String[]> list = new ArrayList<String[]>();
    BufferedReader reader = new BufferedReader(new FileReader("D:\\TDarray.txt"));
    while ((line = reader.readLine())!=null) { 
        list.add(getArray(line));
    }        
    reader.close();

    for (String[] stringArr : list) {
        for(String str : stringArr){
            System.out.print(str+" ");
        }
        System.out.println("");
    }
}

private static String[] getArray(String s){
    String[] array = s.split("\\s");
    return array;
}

这是我的文本文件的示例:

3.2  4.7
0.4  0.5  0.6  0.1  0.7
0.1  0.8  0.4
0.1  0.3  0.4  0.9  1.0
0.2  0.9  0.6  0.7  0.2

2 个答案:

答案 0 :(得分:0)

要按换行符拆分列,只需添加\n即可。对于您的打印输出,您也可以使用它。现在不用打印就可以填充矩阵了。

for (String[] stringArr : list) {
    for(String str : stringArr){
        System.out.print(str+" ");
    }
    System.out.print("\n");
}

答案 1 :(得分:0)

您只需使用此代码即可。 如果您需要在后期使用Matrix进行数学计算,则将其存储为List<String[]>

是没有意义的
private static Vector<Vector<Float>> loadMatrixAsVector() throws Exception {
    String line = null;
    BufferedReader reader = new BufferedReader(new FileReader(
            "D:\\test.txt"));
    Vector<Vector<Float>> matrix = new Vector<Vector<Float>>();
    while ((line = reader.readLine()) != null) {
        Vector<Float> rowVector = new Vector<Float>();
        for (String value : line.split(" ")) {
            rowVector.add(Float.valueOf(value));
        }
        matrix.add(rowVector);
    }
    reader.close();

    System.out.println("Matrix : " + matrix);
    return matrix;
}