我没有按以下格式输入文件: 罗里威廉姆斯 88 92 78 -1 詹姆斯巴恩斯 87 76 91 54 66 -1 等等....
我想读取每个人的分数,直到我达到-1并将分数存储在ArrayList中。我理解如何将得分转换为一个人的ArrayList,但我不明白如何按人分组或为下一个人读取分数。
对于个人,我的方法如下:
private static ArrayList<Integer> readNextSeries(Scanner in) {
ArrayList<Integer> scores = new ArrayList<Integer>();
int x=0;
while (in.hasNextLine())
{
if (scores.get(x)!=-1)
{
scores.add(in.nextInt());
x++;
}
}
return scores;
}
我们必须以某种方式存储不同人的分数,因为那时我们必须计算每个人的平均分,中位数,最大分和最小分数,然后计算最高的平均分数和最低的平均分数。人。我唯一的另一个想法是,也许我可以为每个人创建一个单独的ArrayList,使用他们的名字作为ArrayList名称 - 我不确定这是否正确。
答案 0 :(得分:1)
您应该使用HashMap
。这是此数据结构的完美用例。能够根据它的关联对事物进行分组并访问它们。在某些语言中,它被称为associative array
或dictionary
答案 1 :(得分:0)
您的方法对于一个人来说应该是这样的
private static ArrayList<Integer> readNextSeries(Scanner in)
{
ArrayList<Integer> scores = new ArrayList<Integer>();
if (in.hasNextLine())
{
int score = in.nextInt();
if (score !=-1)
{
scores.add(score);
}
else
{
return scores;
}
}
return scores;
}
因为scores
最初是一个空的ArrayList而scores.get(x)
的{{1}}会抛出一个x = 0
对于所有文件:
IndexOutOfBoundsException