我有一个.csv文件,其中包含如下所示的数据:名字姓氏首字母,1/0,1/0,....
它是1或0,取决于人们从包含50对选项的txt文件中的选择。
我的问题是,我的方法(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);
}
2条答案
按热度按时间fnatzsnv1#
您的方法中存在两个问题:
1.您只检查了
if (answers[i] == 0)
的情况,您需要一个else部分来处理不为真的情况,即answers[i] == 1
1.你的
answers
数组只有你的choices
列表的一半大小,并且数组中的ith
索引保存了关于i * 2
和i * 2 + 1
选项的信息,但是现在你将answers
的ith
索引与你的选项列表的ith
索引相关联。将
classSummary
方法的内部循环中的代码从:到
e4eetjau2#
你甚至可以缩短@厄立特里亚建议的代码:
但是,您确实应该使用如下答案验证该文本文件的输入:
你可以用
Map<Integer>
代替ArrayList<Choices>
(这意味着你不需要实现整个Choices
类),在这种情况下,如果选择的顺序在结果中不重要,你可以使用HashMap
,或者如果选择的顺序应该保持在输入文件中出现的顺序,你可以使用LinkedHashMap
。或者在
Choices
类中实现一个方法increment
来提高代码的可读性:这样,您将只写入
choices.get(index).increment();
,而不是choices.get(index).setCount(choices.get(index) + 1);