【发布时间】:2016-11-22 21:06:30
【问题描述】:
我正在尝试为 Java 创建一个 Tile Map Editor,但在文件打开时遇到了问题。打开文件本身并不是什么大问题,但是一旦我在文本文件中输入空格,它就会产生运行时错误。每个图块都包含一个图像(黑色或白色方形 atm)以及它是实心 (1) 还是非实心 (0)。瓦片地图当前将保存为如下格式:
1:1 1:1 1:1 1:1 1:1 1:1
1:1 0:0 0:0 0:0 0:0 1:1
1:1 0:0 0:0 0:0 0:0 1:1
1:1 1:1 1:1 1:1 1:1 1:1
例如,这可能是一个简单的房间,带有坚固的黑色墙壁并且会阻挡玩家。这将是一个 6x4 的瓦片地图。如何定义格式 x:x(whitespace here)?
List<Integer> list = new ArrayList<Integer>();
File file = new File("file.txt");
BufferedReader reader = null;
try
{
reader = new BufferedReader(new FileReader(file));
String text = null;
while ((text = reader.readLine()) != null)
{
list.add(Integer.parseInt(text));
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
【问题讨论】:
-
您究竟想在列表的每个元素中存储什么?单个 1:1 还是整行?当您尝试在充满冒号的行上进行 parseInt 时,会发生异常。您为什么要在包含冒号的这一行上尝试 parseInt ?如果您想解析出您的 int,那么您希望列表中的每个元素看起来像什么?
-
上面的代码示例是为了尝试使其在更基础的层面上工作。在实际情况下,我有一个 List
TileMap。 Tile 是一个由 int ID 和 int Type 及其 getters() 和 setters() 组成的类。因此,我想将第一个 1 存储为 ID,将第二个 1 存储为类型,并像列表中的每个 Tile 元素一样继续。编辑:我正在寻找的就像 c# scanf Arguments %d or %r etc...
标签: java file format delimiter file-handling