Java:在以下情况下如何从保存文件加载?

标签 java io save load

我正在做一个图形编辑器作为作业。在继续之前,我必须提到每个节点都有 x 和 y 坐标、宽度、高度和名称,并且每条边连接 2 个节点。我们必须创建自定义保存文件,如下所示: - 第一行具有节点数 (N) 和边数 (E) -接下来的N行,每行描述一个节点(x,y,宽度,高度,名称) -接下来的E行,每行描述一条边(每条边由它连接的节点的索引描述) 此类文件的一个示例是:

3 2
2 0 1 1 Name1
1 1 1 1 Name2
3 2 1 1 Name3
0 1
1 2

现在我必须创建一个加载方法来根据保存文件生成图形。我认为我必须逐行扫描文件并创建图表。然而,它的实现给我带来了一些麻烦。让我们考虑第一行 3 2。我应该扫描 3 和 2,然后创建 3 个节点和 2 个边。但是,我不确定如何正确执行此操作,因为每当我创建节点时,我都会使用他的 x、y、宽度、高度、名称(位于保存文件的下一行),如下所示:

Node A = new Node(2, 0, 1, 1, "Name1");
Node B = new Node(1, 1, 1, 1, "Name2");
Node C = new Node(3, 2, 1, 1, "Name3");

例如。

我也不确定如何命名节点对象,因为我必须创建的每个节点都必须具有上面不同的变量名称(如 A B C),因为我将它们放入 ArrayList 中。我的意思是我不能只从保存文件中读取 3,然后通过执行以下操作来创建图表:

for (i=0; i < nrReadFromSaveFileWhichIs3InThatCase ; i++){
     Node A = new Node (??????)
     //add the node to the arraylist
     ...

}

如果您需要其他信息,请告诉我,我将在此处放置更多代码作为编辑。希望这已经足够清楚了,谢谢您的宝贵时间!

最佳答案

据我了解,您在循环内创建节点对象时遇到问题,我建议您创建一个节点数组,每次读取一行节点时,将其存储在数组中:

 // get Nbr_of_nodes by reading the file
 Node myNodes[] = new Node[Nbr_of_nodes] ;
 for (i=0; i < Nbr_of_nodes ; i++){
 //create and add the node to the ArrayList
  myNodes[] = new Node(x, y, w, h, "Name");
 }

关于Java:在以下情况下如何从保存文件加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62351341/

相关文章:

java - Apache 的 ContextMap 是否需要显式清理?

c# - 如何使用Unity麦克风将应用程序输出的音频录制为输入

c++ - 写入未打开的 ofstream

java.io.StreamCorruptedException : invalid type code: 3F when I customize serialization process

python - 如何每天运行一次 python 脚本来创建网络目录的备份副本?

java - 如何制作保存按钮

java - GLFWKeyCallback 类型的 free() 方法未定义

java - 在 GUI 更新之间造成延迟

cakephp - 将数据从配置文件模型 Cakephp 保存到用户模型

vector - 用于处理 2D vector 和坐标的库