如何将文本文件存储到 2d int 数组中

How to store text file into 2d int array

提问人:ChildishGambino 提问时间:8/31/2020 更新时间:8/31/2020 访问量:45

问:

我有两个文件,格式如下,其中第一个 int 需要存储在某个地方,第二行和向下将存储到 2d 数组中。第一个数字,在本例中为 4,将表示大小为 int [][] array = new int [2*4][4];但是,4 不应是数组的一部分,应丢弃。文件路径将通过命令行提供给程序。我还没有找到任何可以执行此功能的可能。

4
7 5 6 4
5 4 6 7
4 5 6 7
4 5 6 7
Java IO 命令行参数 IOSTREAM

评论

0赞 Kevin Anderson 8/31/2020
什么具体问题阻碍了您的进步?
0赞 ChildishGambino 8/31/2020
我没有执行我正在寻找的功能的代码,我在这里尝试或找到的任何代码都没有用于此特定目的。
0赞 Kevin Anderson 8/31/2020
Stack Overflow 是一个问答论坛,而不是免费的代码编写服务。但是,如果您有一些代码已经尝试过并且遇到问题,请将其添加到您的问题中,我们将很乐意为您提供帮助。

答:

1赞 Amit Kumar Lal 8/31/2020 #1

我使用 java 7 API 将文件读入列表。

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

public class SOTest {

    public static void main(String[] args) throws IOException  {
        int[][] arr = null;
        String path = args[0];
        List<String> lines = Files.readAllLines(Paths.get(path));
        for (int i=0; i<lines.size() ; i++) {
            String[] aStr = lines.get(i).split("\\s+");
            if(aStr.length==1) {    
                int size = Integer.valueOf(aStr[0]);
                System.out.println("Size of array "+size);
                arr = new int[size][size];
                populateArr(arr, lines.subList(i+1, i+size+1));
                print(arr);
                i = i+size;
            }   
        }
    }

    public static void populateArr(int[][] arr, List<String> list) {
        for(int i=0; i<list.size(); i++) {
            String[] values = list.get(i).split("\\s+");
            for(int j=0; j<values.length; j++) {
                arr[i][j] = Integer.parseInt(values[j]);
            }
        }
    }
    
    private static void print(int[][] arr) {
        System.out.println("***********PRINT***********");
        for(int i=0; i<arr.length; i++) {
            for(int j=0; j<arr[i].length; j++) {
                System.out.print(arr[i][j]+" ");
            }
            System.out.println();
        }       
    }
}

输入(文件位置) 文件内容如下

4
7 5 6 4
5 4 6 7
4 5 6 7
4 5 6 7
3
1 2 3
4 5 6
7 8 9

Java 程序的输出

Size of array 4
***********PRINT***********
7 5 6 4 
5 4 6 7 
4 5 6 7 
4 5 6 7 
Size of array 3
***********PRINT***********
1 2 3 
4 5 6 
7 8 9