一个多月前从零开始学java开发,关于实体类的属性定义不太清楚怎么入手
你得给出你这个是平面表格还是什么东西,对吧?不然的话大家都不知道你说的怎么走。
一个解析类 负责解析tsv 文件,
一个节点类(xy坐标 和数值)
一个节点的集合类(或者字节一个二维数组也可以,简单点), 存储多个节点 (就是 第一个解析类 解析的结果)
一个路径类(节点的LIst集合,或者一维数组)
一个算法类 实现(Dijkstra), 输入一个 集合, 返回一条路径
做题现在还不合适你,就算把这题给你,你还是不理解
你要理解不光是实体类部分,还有其他Java最基础得东西,然后再深入
再回来就简单了
这个问题不难的啊,这个实体类可以这样描述,设实体类名为Node ,则一个属性为节点的名称name,如表格中的A1 B2 数字表示行号,一个属性为下一个节点的名称,下一个节点可能有多个,一个属性为当前节点与下一个节点距离
定义一个实体类就行了,实体类里面多个属性字段,每个属性字段对应一列
首先,对于这个问题,我们需要根据图中内容来定义实体类。其中每一行表示一个有向边,包括起始节点、目标节点和边的权重。那么我们可以定义三个实体类:Node、Edge和Graph。
Node类
我们可以定义一个Node类来表示图中的节点,其中包含节点的名称(id)和节点到起始点(S)的距离(distance)两个属性。
java
public class Node {
private String id; // 节点id
private double distance; // 起始点(S)到该节点的距离
// 构造方法、getter和setter省略
}
Edge类
我们可以定义一个Edge类来表示图中的边,其中包含起始节点(startNode)、目标节点(endNode)和边的权重(weight)三个属性。
java
public class Edge {
private Node startNode; // 起始节点
private Node endNode; // 目标节点
private double weight; // 边的权重
// 构造方法、getter和setter省略
}
Graph类
最后,我们可以定义一个Graph类来表示这个有向图,其中包含所有的节点(nodes)和所有的边(edges)两个属性。
java
public class Graph {
private List<Node> nodes; // 所有的节点
private List<Edge> edges; // 所有的边
// 构造方法、getter和setter省略
}
有了这三个实体类,我们就可以根据文件内容来构建这个有向图了。
在读取文件内容时,我们可以按行读取文件内容,然后解析行中的3个值:起始节点ID、目标节点ID和边的权重。根据这些值,我们可以创建一个Edge对象,并将其放入Graph中。
当我们需要计算S到E的最短路径时,可以从Graph中找到起始节点S,并将其distance值设置为0。然后使用Dijkstra算法遍历所有的节点,并更新它们到S的距离值,最后得到E节点的距离值即为S到E的最短路径长度。
总结一下,根据文件内容定义对象属性的思路应该是:
根据文件内容定义实体类;
在读取文件内容时,解析每一行的值,并构建实体类对象;
通过实体类对象构建整个数据结构(例如有向图);
根据需要,对数据结构进行操作和计算。
希望这些思路对您有所启发!
你这个是最短路径算法,不适合作为研究面向对象。建议你去研究图书管理系统、学生管理系统这些常见的入门项目,算法是为了解决问题的,一般面向过程编程,用面向对象编程太麻烦了,而且有点强行拆分的意味在里面