我对编程相当陌生,刚刚被设置了创建一个应用程序的任务,该应用程序将从用户输入中读取 .csv 文件名,然后运行一系列测试。最终,程序需要比较每一行(csv 文件中的每一行代表一个路由器),并根据设定的标准返回哪些路由器需要补丁。 CSV 文件的格式如下所示,其中包含不一定需要包含的标题“主机名”、“IP 地址”、“已修补?”、操作系统版本和注释 -
A.example.COM, 1.1.1.1, NO, 11, Faulty fans
b.example.com, 1.1.1.2, no, 13, Behind other routers
C.EXAMPLE.COM, 1.1.1.3, no, 12.1
d.example.com, 1.1.1.4, yes, 14
c.example.com, 1.1.1.5, no, 12, Case a bit loose
e.example.com, 1.1.1.6, no, 12.3
f.example.com, 1.1.1.7, No, 12.2
g.example.com, 1.1.1.6, no, 15
因此,程序需要返回任何不与任何其他路由器共享相同主机名和 IP 地址、当前操作系统版本为 12 或更高版本或尚未打补丁的路由器的名称。
到目前为止,我已经尝试将每一行作为 Java 对象读取并从那里进行比较,但没有成功。任何有关使该程序正常运行的好方法的建议将不胜感激,谢谢。
最佳答案
以下是我的建议:
- 创建一个类(我们称之为“Router”),其中包含“hostName” - 字符串、“ipAddresss” - 字符串、“patched” - boolean 值、“osVersion” - Double 和“notes” - 字符串。添加相关的 setter 和 getter。
- 创建一个包含“Router”类列表的“routers”列表,并将其初始化为空。
- 创建一个以 Router 对象作为参数的方法。首先比较“osVersion”。然后遍历“路由器”列表。在迭代期间,将给定的 Router 对象与您遇到的每个 Router 对象进行比较。如果存在重复项,则不执行任何操作,否则在迭代后将此对象添加到列表中。
- 迭代 CSV 文件的每一行,并将每一行解析为“Router”对象,并调用您在 #3 中创建的方法。
- “路由器”应包含程序完成后的最终结果。
关于Java 应用程序读取 csv 文件并比较每行中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42634722/