Java读取文件并写入数组

标签 java file parsing multidimensional-array

---------------- 已解决!!! ---------------------- 我要感谢大家的帮助!

我必须读取一个包含 nxm 个元素的文件,然后将这些元素放入二维数组中,然后将其打印出来。我在打印我的数组时有点卡住了。在 file.txt 中我有 2x2 => 2 行和 2 列,元素是:1 2 3 4。

这是我的代码:

public class ex_1 
{
    public static void main(String args[])
    {   
        FileReader fr = new FileReader("FirstMatrix.txt");
        BufferedReader br = new BufferedReader(fr);
        String s = br.readLine();
        String[] split = s.split("x");
         int k=Integer.parseInt(split[0]);
         int l=Integer.parseInt(split[1]);
        System.out.println("Matrix dimensions: "+k+" lines,  "+l+" columns si "+k*l+" elements");

        System.out.print("Elements in matrix are: \n"); 

        int[][] FirstMatrix = new int [k][l];
                while ((s = br.readLine()) != null) 
                {       
                    for(int i=0; i<FirstMatrix.length; i++)
                        for(int j=0; j<FirstMatrix[i].length;j++)
                        {
                            FirstMatrix[i][j] = Integer.parseInt(s);
                            System.out.println("FirstMatrix["+i+"]["+j+"]="+FirstMatrix[i][j]);
                        }   
                }
                br.close();

我的输出结果如何:

FirstMatrix[0][0]=1   
FirstMatrix[0][1]=1    
FirstMatrix[1][0]=1    
FirstMatrix[1][1]=1    
FirstMatrix[0][0]=2    
FirstMatrix[0][1]=2    
FirstMatrix[1][0]=2    
FirstMatrix[1][1]=2    
FirstMatrix[0][0]=3    
FirstMatrix[0][1]=3    
FirstMatrix[1][0]=3    
FirstMatrix[1][1]=3    
FirstMatrix[0][0]=4    
FirstMatrix[0][1]=4    
FirstMatrix[1][0]=4    
FirstMatrix[1][1]=4       

我想要的样子:

FirstMatrix[0][0]=1   
FirstMatrix[0][1]=2    
FirstMatrix[1][0]=3    
FirstMatrix[1][1]=4           

请问有人知道我该如何解决这个问题吗?

编辑!! 如果我像这样更改代码

    int[][] FirstMatrix = new int [k][l];

                while ((s = br.readLine()) != null) 
                {       
                    for(int i=0; i<k;i++)
                        for(int j=0; j<l; j++)
                        {
                        FirstMatrix[i][j] = Integer.parseInt(s);
                        }
                }
                br.close();

                for(int i=0; i<FirstMatrix.length; i++)
                    for(int j=0; j<FirstMatrix[i].length;j++)
                    {
                        System.out.println("FirstMatrix["+i+"]["+j+"]="+FirstMatrix[i][j]);
                    }

我得到这个输出:

FirstMatrix[0][0]=4
FirstMatrix[0][1]=4
FirstMatrix[1][0]=4
FirstMatrix[1][1]=4

最佳答案

您正在执行 n*n 次循环。因为每次您读取文件时都会进入循环。如果您知道每一行都是一个数字,您可以只读取一次并打印每一行。

试一试,让我知道会发生什么。

来自墨西哥的问候

关于Java读取文件并写入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34163313/

相关文章:

java - 我怎样才能实现一个通过传递一个整数来返回一个字符串的方法,而不需要很多 if 语句?

c# - 目录长度不起作用

parsing - libclang : get a collection of method locations

java - 从其他合法的 json 中剥离类似 C 的注释

java - 如何隐藏 "java desktop application"

java - MVP GWT 项目中的页眉/页脚

linux - 在 Unix/Linux 中将特定文件从一个文件夹复制到另一个文件夹

c - 将命令行语句解析为标记列表

java hibernate标准问题

c - 写入文件并使用带循环的 if 语句