如何从 Android 中的文本文件创建二维数组?
How do I create a 2 dimensional array from a text file in Android?
如何通过读取如下所示的 .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;
}
}
}
}
}
缓冲阅读器。同样要制作一个二维数组,步骤应如下所示:
1 - 制作二维数组
2 - 在您阅读观察线时将其添加到数组[line#][0]
此外,您正在将 char 转换为 int。从而导致它更改为 Unicode(或我不知道的 ASCII)表示形式,例如52.
好的,谢谢你的帮助!我按照 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;
}
}
}
可能有更简单的方法,但我不确定。无论哪种方式,这对我都有效!
如何通过读取如下所示的 .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;
}
}
}
}
}
缓冲阅读器。同样要制作一个二维数组,步骤应如下所示:
1 - 制作二维数组
2 - 在您阅读观察线时将其添加到数组[line#][0]
此外,您正在将 char 转换为 int。从而导致它更改为 Unicode(或我不知道的 ASCII)表示形式,例如52.
好的,谢谢你的帮助!我按照 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;
}
}
}
可能有更简单的方法,但我不确定。无论哪种方式,这对我都有效!