classSummary方法统计CSV数据不完整,计数结果错误求助
问题描述
我有一个CSV文件,数据格式为:名字 姓氏首字母,1/0,1/0,……。其中的1或0对应一个包含50组选项的TXT文件中用户的选择(例如:Apple、Pear、Dog、Cat)。目前用于统计选择人数的classSummary方法仅完成了一半统计,计数结果不正确。当前代码如下:
public static void classSummary() { for (Student student : data) { int[] answers = student.getAnswers(); for (int i = 0; i < answers.length; i++) { if (answers[i] == 0) { choices.get(i).setCount(choices.get(i).getCount() + 1); } // 缺少对1的统计逻辑,且代码未闭合
问题分析与修复建议
- 核心逻辑缺失:代码只统计了
answers[i] == 0的情况,完全没有处理值为1的选择,这直接导致统计结果只有一半。 - 代码结构不完整:给出的代码缺少循环和方法的闭合
},可能导致语法错误或逻辑提前终止。 - 索引一致性校验:需要确保
choices集合的元素数量(对应50组选项)和answers数组的长度完全一致,避免出现索引越界或统计遗漏。
修复后的示例代码
public static void classSummary() { // 先校验选项集合与答题数据长度是否匹配(对应50组选项) if (!data.isEmpty() && choices.size() != data.get(0).getAnswers().length) { throw new IllegalArgumentException("选项数量与答题数据长度不匹配"); } for (Student student : data) { int[] answers = student.getAnswers(); for (int i = 0; i < answers.length; i++) { if (answers[i] == 0) { choices.get(i).setCount0(choices.get(i).getCount0() + 1); } else if (answers[i] == 1) { choices.get(i).setCount1(choices.get(i).getCount1() + 1); } // 可选:处理非0非1的异常数据 // else { /* 记录无效数据或跳过 */ } } } }
额外说明
- 需确保
choices对应的实体类有两个计数字段(比如count0和count1),分别对应0和1的选择人数,并实现对应的setter方法。 - 如果0代表“未选择”、1代表“已选择”,可根据业务需求调整逻辑,比如只统计1的数量,或者分别统计两者的占比。
内容的提问来源于stack exchange,提问作者ILoveMusic
相关产品推荐
相关产品推荐

