gpt4 book ai didi

Java:文件读取问题

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

你会如何编写这段代码?

这个特殊问题是关于一个迷宫游戏,该游戏有一个占据者的数组列表,其中包括探险家(你)、怪物(触摸会杀死你)和宝藏。游戏使用这些居住者居住的方形物体 block 。我想做的具体事情是文件读取,它可以导出迷宫的当前配置或将它们导入为 txt 文件。

规范:首先读取迷宫的行和列以创建适当大小的 Square[][]。然后构建并读取所有方 block /占用者。

对于正方形,迷宫将首先确定该行以“Square”开头。然后它将读取 Square 的行和列并使用该信息构造 Square 对象。最后,它将把 Scanner 的其余部分传递给 Square 的 toObject 方法,以便它可以初始化自身。

对于所有其他占用者,迷宫将确定它是什么类型的占用者,并使用仅采用迷宫的构造函数构造适当的对象。它不会从 Scanner 读取行或列,而只是将 Scanner 传递给新创建对象的 toObject 方法。

这是我迄今为止的代码,可能是错误的:

    public void readMazeFromFile(String fileName) throws IOException, FileNotFoundException, MazeReadException
{
Scanner fileSc = new Scanner(new File(fileName));
String line = fileSc.nextLine(); //whats on the line, will be overwritten
Scanner lineSc = new Scanner(line);
String temp;
lineSc.useDelimiter(",");
int lineNum = 1; //every time you scan a line out, do lineNum++
int r1, r2, r3, r4, c1, c2, c3, c4;

rows = fileSc.nextInt();
cols = fileSc.nextInt();
Square hi = new Square(rows, cols);
line = fileSc.nextLine();
while ( line != null)
{
line = lineSc.nextLine();
lineSc = new Scanner(line);

if( lineSc.equals("Square"))
{
r1 = lineSc.nextInt();
c1 = lineSc.nextInt();
hi.toObject(lineSc);
}
if (lineSc.equals("Explorer"))
{

explorer.toObject(lineSc);
}
if (lineSc.equals("Treasure"))
{
Treasure.toObject(lineSc);
}


lineNum++;
}

这是示例输出:

5,5
Square,0,0,true,false,false,true,true,true
Square,0,1,true,false,true,false,true,true
Square,0,2,true,false,true,false,false,false
Square,0,3,true,false,false,false,false,false
Square,0,4,true,true,false,false,false,false
Square,1,0,false,false,true,true,true,true
Square,1,1,true,false,true,false,false,false
Square,1,2,true,true,false,false,false,false
Square,1,3,false,true,false,true,false,false
Square,1,4,false,true,false,true,false,false
Square,2,0,true,false,false,true,false,false
Square,2,1,true,false,true,false,false,false
Square,2,2,false,true,false,false,false,false
Square,2,3,false,true,false,true,false,false
Square,2,4,false,true,false,true,false,false
Square,3,0,false,true,false,true,false,false
Square,3,1,true,false,false,true,false,false
Square,3,2,false,true,false,false,false,false
Square,3,3,false,true,true,true,false,false
Square,3,4,false,true,false,true,false,false
Square,4,0,false,true,true,true,false,false
Square,4,1,false,true,true,true,false,false
Square,4,2,false,false,true,true,false,false
Square,4,3,true,false,true,false,false,false
Square,4,4,false,true,true,false,false,false
Explorer,0,0,Scary Name
Treasure,4,4,true
Treasure,2,2,false
Monster,4,4
Monster,3,3

您会为此部分写什么?

最佳答案

这是一个你可以开始使用的骨架。你真的只需要 Scanner这里;它可以完成您需要扫描输入并进行转换等的所有操作。您想使用它的 next() , nextInt() , nextBoolean()nextLine()方法。

    Scanner in = new Scanner(new File(filename));
in.useDelimiter("\\s+|,");

int rows = in.nextInt();
int cols = in.nextInt();
// construct the array

while (in.hasNext()) {
String type = in.next();
int r = in.nextInt();
int c = in.nextInt();
// read more depending on type
}

关于Java:文件读取问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2316034/

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