2017-08-02 285 views
-2

我使用下面的代码从文件中读取一个矩阵,它运行良好,但现在我需要通过空格拆分行和列以成为矩阵以便使用它在另一个功能。不幸的是我不知道如何处理ArrayList,那么任何人都可以帮助我编辑这段代码吗?从txt文件读取矩阵并保存到二维数组

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 
+0

*处理的ArrayList *的意思是什么呢? – Guy

+0

寻求调试帮助的问题(“为什么这个代码不工作?”)必须包含所需的行为,特定的问题或错误以及在问题本身中重现问题所需的最短代码。没有明确问题陈述的问题对其他读者无益。请参阅:如何创建[mcve]。使用“编辑”链接来改善你的*问题* - 不要通过评论添加更多信息。谢谢! – GhostCat

+0

“.txt”文件中矩阵的当前结构是什么。请发布当前文本文件的样本 – FreshD

回答

0

要由换行符分割栏只需添加\n。对于您的打印输出,您也可以使用它。现在,而不是打印,你可以填写你的矩阵。

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

您可以简单地使用这段代码。 如果你需要使用的数学计算矩阵后期有没有点把它作为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; 
} 
+0

谢谢,但我怎样才能回想起主要的这个功能?我以前没有用过它。 –

+0

你如何调用System.out.println? 先学习基础Java。我们不是在这里教你记录良好的java语法。如果您在某些特定问题上需要帮助,请首先发布您当前的代码/伪代码,说明您的问题和要求。 调用静态方法来自main的方法是Java的基本部分语法 – Pradatta

+0

调用此方法后,您将拥有一个包含浮点值的2D向量对象。那么你可以自由地做任何事情对象 – Pradatta