如何从Android中的文本文件创建二维数组?

时间:2015-02-01 17:45:47

标签: android multidimensional-array bufferedreader

如何通过读取如下所示的.txt文件来制作二维Array整数:

0000                
0100            
1233

您会使用BufferedReader还是InputStream? 这是我到目前为止所遇到的,它要么崩溃,要么只是说52,52,52 ....

 public static void loadTileMap(String fileName, int height, int width) throws IOException{
    BufferedReader reader = new BufferedReader(new InputStreamReader(GameMainActivity.assets.open(fileName)));
    String line;
    tileArray = new int[width][height];
    while (true) {
        line = reader.readLine();
        if (line == null) {
            reader.close();
            break;
        }
        for (int i = 0; i < width; i++) {
            String string = line.toString();
            for (int j = 0; j < height; j++) {
                if (j < string.length()) {
                    int k = (int)string.charAt(j);
                    tileArray[i][j] = k;
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

Bufferdreader。同样要制作像这样的2D数组:步骤应如下所示:

1 - 制作2D数组

2 - 当您阅读观察线时,将其添加到数组[line#] [0]

此外,您正在将char转换为int。从而使其改变为其Unicode(或我不知道的ASCII)表示,例如52。

答案 1 :(得分:1)

好的,谢谢你的帮助!我做了Cyber​​Geek.exe建议但我修改了一下。这是我的代码:

public static int[][] tileArray;

public static void loadTileMap(String fileName, int height, int width) throws IOException {

        BufferedReader reader = new BufferedReader(new InputStreamReader(GameMainActivity.assets.open(fileName)));
        String line;
        tileArray = new int[width][height];

        for (int i = 0; i < width; i++) {
            line = reader.readLine();
            if (line == null) {
                reader.close();
            }
            for (int j = 0; j < height; j++) {
                int k = Integer.parseInt(line.substring(j, j+1));
                tileArray[i][j] = k;
            }
        }
}

可能有一种更简单的方法,但我不确定。无论哪种方式,这对我有用!