如何通过读取如下所示的.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;
}
}
}
}
}
答案 0 :(得分:1)
Bufferdreader。同样要制作像这样的2D数组:步骤应如下所示:
1 - 制作2D数组
2 - 当您阅读观察线时,将其添加到数组[line#] [0]
此外,您正在将char转换为int。从而使其改变为其Unicode(或我不知道的ASCII)表示,例如52。
答案 1 :(得分:1)
好的,谢谢你的帮助!我做了CyberGeek.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;
}
}
}
可能有一种更简单的方法,但我不确定。无论哪种方式,这对我有用!