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读取文件并写入数组_Java_File_Parsing_Multidimensional Array - Fatal编程技术网

Java读取文件并写入数组

Java读取文件并写入数组,java,file,parsing,multidimensional-array,Java,File,Parsing,Multidimensional Array,--------解决了------------ 我要感谢大家的帮助 我必须读取一个包含nxm元素的文件,然后将这些元素放入2D数组,然后打印出来。我在打印阵列时有点卡住了。在file.txt中,我有2x2=>2行2列,元素是:1 2 3 4 这是我的密码: public class ex_1 { public static void main(String args[]) { FileReader fr = new FileReader("FirstMat

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

我必须读取一个包含nxm元素的文件,然后将这些元素放入2D数组,然后打印出来。我在打印阵列时有点卡住了。在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]=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]);
                    }

你做了n*n次循环。因为每次读取文件时都会进入循环。如果您知道每一行都是一个数字,那么您只能读取一次并打印每一行

试试看,让我知道会发生什么


墨西哥向您致以最诚挚的问候

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

试试看,让我知道会发生什么

在这一行System.out.printElements之后,墨西哥向您致以最诚挚的问候:\ n; 粘贴此代码

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

        for(int j=0; j<l;j++)
        {  
            for(int i=0; i<k; i++) {
                s = br.readLine());
                FirstMatrix[j][i] = Integer.parseInt(s);
                System.out.println("FirstMatrix["+j+"]["+i+"]="+FirstMatrix[j][i]);
            }
        }
不要使用while循环。

在这一行之后,矩阵中的System.out.print元素是:\n;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class ex_1 {
    public static void main(String args[]) throws IOException {
        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];

        for (int lineIndex = 0; lineIndex < k; lineIndex++) {


                for (int columnIndex = 0; columnIndex < l; columnIndex++) {
                    s = br.readLine();
                    FirstMatrix[lineIndex][columnIndex] = Integer.valueOf(s);
                }

        }

        for (int a = 0; a < k; a++) {
            for (int b = 0; b < l; b++)
                System.out.print(FirstMatrix[a][b] + " ");
            System.out.println();
        }

        br.close();

    }
}
粘贴此代码

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

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


不要使用while循环。

请注意,对于每一行,您是如何在整个2D数组中进行双循环的。您希望按此顺序每次添加一个值0,0,0,1,1,0,1,1,即不需要循环。试着辨别模式。希望这有帮助。是的,你在这里说的有帮助。让我想想解决办法。感谢@RYUU9187没有循环,我得到了FirstMatrix[0][0]=1 FirstMatrix[0][0]=2 FirstMatrix[0][0]=3 FirstMatrix[0][0]=4请注意,对于每一行,您是如何在整个2D数组中进行双循环的。您希望按此顺序每次添加一个值0,0,0,1,1,0,1,1,即不需要循环。试着辨别模式。希望这有帮助。是的,你在这里说的有帮助。让我想想解决办法。谢谢@RYUU9187没有循环我得到第一矩阵[0][0]=1第一矩阵[0][0]=2第一矩阵[0][0]=3第一矩阵[0][0]=4谢谢你的回复,但现在我得到第一矩阵[0][0]=1第一矩阵[1][0]=1第一矩阵[0][0]=2第一矩阵[0][0]=3第一矩阵[1][0]=3第一矩阵[0]=4第一矩阵[1][0]=4谢谢你的回复,但是现在我得到了FirstMatrix[0][0]=1 FirstMatrix[1][0]=1 FirstMatrix[0][0]=2 FirstMatrix[0][0]=3 FirstMatrix[1][0]=3 FirstMatrix[0][0]=4 FirstMatrix[1][0]=4Greetings@Daniel Azamar!它不会起作用的…:但是谢谢你的建议,我要重新考虑循环。你在做j*i次。你不需要那样做。尝试删除这两个,看看会发生什么!我删除了它们,但它不起作用,如果没有for循环,我得到FirstMatrix[0][0]=1 FirstMatrix[0][0]=2 FirstMatrix[0][0]=3 FirstMatrix[0][0]=4Ok。我得到了它。如果你试着独立使用计数器?我的意思是:I++,所以当I==2时,根据您的逻辑设置I=0,我现在会尝试,我会让您知道问候@Daniel Azamar!它不会起作用的…:但是谢谢你的建议,我要重新考虑循环。你在做j*i次。你不需要那样做。尝试删除这两个,看看会发生什么!我删除了它们,但它不起作用,如果没有for循环,我得到FirstMatrix[0][0]=1 FirstMatrix[0][0]=2 FirstMatrix[0][0]=3 FirstMatrix[0][0]=4Ok。我得到了它。如果你试着独立使用计数器?我的意思是:I++,所以当I==2时,根据您的逻辑设置I=0。我现在会尝试,我会让您知道的。谢谢您的代码,感谢您花时间为我构建这段代码。我的列表中的元素不是这样的1 2 3 4 5,是1\n 2\n 3\n 4如果你知道我的意思,元素排成一行。我试图将您的代码转换为我的代码,但无法工作…:我的朋友们:阿库玛和我的朋友们!感谢您的代码,感谢您花时间为我构建此代码。我的列表中的元素不是这样的1 2 3 4 5,是1\n 2\n 3\n 4如果你知道我的意思,元素排成一行。我试图将您的代码转换为我的代码,但无法工作…:我的朋友们:阿库玛和我的朋友们!
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class ex_1 {
    public static void main(String args[]) throws IOException {
        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];

        for (int lineIndex = 0; lineIndex < k; lineIndex++) {


                for (int columnIndex = 0; columnIndex < l; columnIndex++) {
                    s = br.readLine();
                    FirstMatrix[lineIndex][columnIndex] = Integer.valueOf(s);
                }

        }

        for (int a = 0; a < k; a++) {
            for (int b = 0; b < l; b++)
                System.out.print(FirstMatrix[a][b] + " ");
            System.out.println();
        }

        br.close();

    }
}