Java最优手机筛选程序仅输出一部结果及文件解析漏读问题求助
问题分析与修复建议
1. 解析文件仅读取到3部手机(共4部)
大概率是文件读取逻辑的换行处理或格式校验问题:
- 检查
PhoneParser的循环读取代码,确认是否因为空行跳过逻辑错误或最后一行未被处理导致遗漏。比如如果用readLine()循环时,最后一行若没有换行符可能被忽略,或者某行格式不符合预期(如逗号分隔错误、多余空格)被误判为无效行。 - 验证测试文件的第4行格式是否和前3行一致,同时检查文件换行符是否统一(避免Windows CRLF和Linux LF混合导致的读取异常)。
2. 仅输出一部最优手机(需求是屏幕最大+电池最高两部)
核心问题在PhoneList.getBestPhones()的筛选逻辑:
- 排查是否只处理了单一维度(比如只找了屏幕最大的,没单独筛选电池最高的),或者当屏幕最优和电池最优是同一部手机时,没有补充次优的另一维度机型。
- 修复逻辑参考:
- 遍历所有手机,筛选出屏幕尺寸最大的机型(若有多部,任选其一)
- 再次遍历,筛选出电池容量最高的机型;如果该机型和屏幕最优是同一部,则取电池容量第二高的
- 用
ArrayList存储这两部结果(避免用Set去重导致丢失),确保集合最终包含2部手机(若所有机型的双维度最优都是同一部,可返回该部+次优的另一维度机型)
3. 无法正常打印手机型号
问题出在Phone类的字段赋值或toString()方法:
- 检查
PhoneParser中解析型号的代码,确认是否正确将文件中对应列的内容赋值给model字段(比如文件格式是型号,屏幕尺寸,电池容量,要确保取分割后的第0个元素)。 - 修复
Phone类的toString()方法,确保包含型号字段,示例:@Override public String toString() { return "型号: " + model + ", 屏幕尺寸: " + screenSize + ", 电池容量: " + batteryCapacity; }
内容的提问来源于stack exchange,提问作者Tariq
相关产品推荐
相关产品推荐

