gpt4 book ai didi

java - 将二维数组文件读入二维数组

转载 作者:行者123 更新时间:2023-12-01 14:16:24 25 4
gpt4 key购买 nike

我正在制作一个自上而下的角色扮演游戏,我计划使用 txt 文件和 2D 数组作为关卡,我将有一个包含从 0 到 6 的值的 2D 数组,每个值代表不同的纹理,我计划保留这些级别在 txt 文件中,但我在将文件读入二维数组时遇到问题。

这就是我的文件的样子

0000000010000000044444444
0000050010000005504444444
0050000010000000005544444
0005000010000000000550550
0000000011111000333333333
0000000000001111100000000
0005000055000010000000000
0000000000000010000000000
0000050000500010000000000
0000000000000010000000000
0000000050005010000000200
0001111111111112200002000
0501000000000002200002000
0051000000000000000002000

这是我用于读取数组的代码,顺便说一句,它的大小为 14x25。

public int[][] readInLevel(String levelNumber)
{

try
{
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(levelNumber)));
while (in.ready() == true)
{

for (int row = 0; row <= 13; row++)
{
for (int column = 0; column <= 24; column++)
{
level_1[row][column] = in.read();
}
}
}
} catch (Exception e)
{
System.out.println(e);
}

return null;

}

这是我的二维数组。

int level_1[][] = new int[14][25];

最佳答案

in.read 读取 ASCII 字节。通知here Ascii 中的“0”是 48。因此,从 in.read 中减去 48,如下所示: level_1[row][column]=in.read()-48; 如果这不起作用,然后转换为 int: level_1[row][column]=(int)(in.read-48);

编辑:好的,有一种方法可以做到这一点,这就是我所做的。编辑编辑:检查换行符

byte b=0;
int row=0;
int column=0;
while((b=in.read())!=1) {
if((char)b=='\n') {
row++;
column=0;
} else {
level_1[row][column]=b-48;
column++;
}
}

行/列代码可能有问题,我没有想清楚。

编辑编辑编辑:好的,找到问题了。如果没有字节,BufferedReader.read() 返回 -1,这意味着每次返回 -49,因为它返回 -1-48。这意味着您的阅读器未正确初始化。检查你的文件。我通常这样做:

File f=new File(path);
FileReader fr=new FileReader(f);
BufferedReader reader=new BufferedReader(fr);

好的,这是我的代码:http://pastebin.com/qstGnK77

它运行得很好,看看输出。

关于java - 将二维数组文件读入二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18070790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com