如何找到落入某个范围的arraylist中的元素数量?

时间:2015-07-21 17:56:41

标签: java arraylist

我正在制作一个程序,允许用户输入标记值,并输出某个标记范围内的学生数量。

实施例。等级2((标记> = 60)&&(标记< 70))

等级3((标记> = 70)&&(标记< 80))

等级4(标记> = 80)。

我想过使用for循环和if语句来查看每个标记属于哪个范围,但我无法弄清楚如何计算它们中有多少属于哪个类别。

ArrayList<Integer> marks = new ArrayList<>();

 private void btnSortActionPerformed(java.awt.event.ActionEvent evt) {                                        

    Collections.sort(marks);
    String output = "";
    for (int i=0; i<marks.size(); i++) {
        output += marks.get(i) + "\n";
    }
    txtOutputSort.setText(output);
}       

2 个答案:

答案 0 :(得分:1)

您可以为每个计数使用一组int。例如(如果你有2个级别):

ArrayList<Integer> marks = new ArrayList<>();
int[] marksCount = new int[2];
//initialize each int in marksCount
for (int i=0; i<marksCount.length; i++) {
marksCount[i] = 0;
}
...
for (int i=0; i<marks.size(); i++) {
if(marks.get(i)<60)
marksCount[0]++;
else if(marks.get(i)>=60 && marks.get(i)<70)
marksCount[1]++;

现在,您可以计算每个级别的标记并将其存储在marksCount数组中。

答案 1 :(得分:0)

使用for loop if-else个案例的想法是可行的选择。对于您提供的范围,以下代码应该有效。

int marks_60_70 = 0;
int marks_70_80 = 0;
int marks_80 = 0;  

for(int mark: marks) {
    if((mark >= 60) && (mark < 70)) {
        marks_60_70++;
    } else if ((mark >= 70) && (mark < 80)) {
        marks_70_80++;
    } else if(mark >= 80) {
        marks_80++;
    }
}