我有一项任务是创建一个"地图"这是一个包含房间的数组。在房间里有一些文物,你可以看,或检查并放入你的库存或背包"。您还可以在地图上保存和恢复展示位置,以及工件位置和广告资源。保存功能将其保存到包含位置,工件和库存的文本文件中。我遇到的问题是尝试从文本文件中获取工件数据以在程序上恢复。我没有加载位置的问题,但无法加载任何工件。在运行调试器时,它会跳过该行。这是我正在努力工作的代码。
File fileRestore = new File("C:\\Users\\mike\\Desktop\\GCPU.txt");
try
{
FileReader reader = new FileReader(fileRestore);
BufferedReader buffer = new BufferedReader(reader);
String line = buffer.readLine();
while (line !=null)
{
String[] contents = line.split(",");
String key = contents[0];
if (key.equals("StartLocation"))
{
row = Integer.parseInt(contents[1]);
col = Integer.parseInt(contents[2]);
}
key = contents [1];
if (key.equals("Artifact"))
{
String name = contents [1];
row = Integer.parseInt(contents [2]);
col = Integer.parseInt(contents [3]);
if (name.equals("vending"))
map.rooms[row][col].contents = map.vending;
if (name.equals("beaker"))
map.rooms[row][col].contents = map.beaker;
if (name.equals("gameboy"))
map.rooms[row][col].contents = map.gameboy;
if (name.equals("paper"))
map.rooms[row][col].contents = map.paper;
if (name.equals("trees"))
map.rooms[row][col].contents = map.trees;
if (name.equals("desk"))
map.rooms[row][col].contents = map.desk;
if (name.equals("brewer"))
map.rooms[row][col].contents = map.brewer;
if (name.equals("statue"))
map.rooms[row][col].contents = map.statue;
}
这是我正在阅读的文本文件:
StartLocation,0,2
Artifact,Eerie statue,2,0
Artifact,A small redwood sprout,3,0
Artifact,Gameboy Color,0,1
Artifact,Lapdesk,1,1
Artifact,A piece of paper,2,1
Artifact,Industrial coffee maker,1,3
所以重申一下我的问题,我如何从文本中读取Artifact行以及StartLocation行?
感谢您抽出宝贵时间阅读本文。
答案 0 :(得分:2)
您只从文件中读取一次。取代这两行:
String line = buffer.readLine();
while (line !=null)
...
有这样的事情:
String line = "";
while((line = buffer.readLine()) != null)
...
每次while
循环迭代时,都应允许您读取下一行。
或者,您可以在line = buffer.readLine()
循环的右大括号之前使用while
。这种方法也是有效的,但是,根据我经历过的教程来判断,这种方法不太受欢迎。
答案 1 :(得分:0)
String line = buffer.readLine();
应该在while循环中。它只被执行一次。
虽然确保修改line
的初始值和循环条件,以便循环开始。
答案 2 :(得分:0)
- String line = buffer.readLine();将跳过第一行。
醇>
2.
if (key.equals("StartLocation"))
{ row = Integer.parseInt(contents[1]);
col = Integer.parseInt(contents[2]);
}
will fail because key = " StartLocation". there is a space in your
text file. use line=line.trim() to remove unnecessary characters.
3. Your program will read only 1 line.