如何一个接一个地访问arrayList中的所有元素?

时间:2013-11-27 15:44:11

标签: java arraylist

我的任务是创建一个程序来列出输入的学生成绩然后找到平均,最高分,最低分,然后列出有多少学生是0,1,2,3和4级。我有除了最后一部分以外的所有其他部分。所有标记都输入到arrayList中,然后进行排序。

如何一个接一个地访问arrayList的所有元素,以便将所有标记输入到正确的类别中? 这是我到目前为止(我已经初始化了包中的arrayList,我知道最后的get语句没有完成,这就是我需要帮助的地方):

编辑:我想我应该补充一点,我希望每个元素被分类到的类别是一个数组,所以我必须在某个时候返回五个数组。

public U3A6_Marks_WillCampbellUI() {
    initComponents();
}


ArrayList <Integer> marks = new ArrayList();


private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    Collections.addAll(marks, Integer.parseInt(jTextField3.getText()));
    StringBuilder text = new StringBuilder();
    for (Integer mark: marks) {
        text.append(mark.toString()).append('\n');
}
    jTextArea1.setText(text.toString());
    jTextField3.setText("");
}                                        

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    Collections.sort(marks);
    StringBuilder text = new StringBuilder();
    for (Integer mark: marks) {
        text.append(mark.toString()).append('\n');
}
    jTextArea1.setText(text.toString());
}                                        

/**
 * @param args the command line arguments
 */
private double average(List <Integer> marks) {
    Integer sum = 0;
    if(!marks.isEmpty()) {
    for (Integer mark : marks) {
         sum += mark;
}
 return sum.doubleValue() / marks.size();
}
 return sum;
}
private int highest(int[] marks) {
     int largest = marks[0];  
     for(int i = 1; i < marks.length; i++){  
     if(marks[i] > largest){  
          largest = marks[i];  
    }  
}  
    return largest;
}
private int lowest(int[] marks) {
    int smallest = marks[0];
    for(int i = 0; i > marks.length; i++) {
        if(marks[i] < smallest){
            smallest = marks[i];
        }
    }
    return smallest;
}
private int sorted() {
    int a = marks.get();
}

1 个答案:

答案 0 :(得分:0)

听起来我想要从级别(0,1,2,3,4)到该级别的成绩列表中的地图。

以下代码应该为您完成:

public Map<Integer, List<Integer>> categorise() {
    final Map<Integer, List<Integer>> categorisedMarks = new HashMap<Integer, List<Integer>>();

    categorisedMarks.put(0, getMarksInRange(0, 20) );
    categorisedMarks.put(1, getMarksInRange(21, 40) );
    categorisedMarks.put(2, getMarksInRange(41, 60) );
    categorisedMarks.put(3, getMarksInRange(61, 80) );
    categorisedMarks.put(4, getMarksInRange(81, 100) );

    return categorisedMarks;
}

private List<Integer> getMarksInRange(final int lowerBonud, final int upperBound) {
    final List<Integer> marksInRange = new ArrayList<Integer>();

    for (final Integer mark : this.marks) {
        if(mark >= lowerBonud && mark <= upperBound) {
            marksInRange.add(mark);
        }
        else if (mark > upperBound) {
            break;
        }
    }

    return marksInRange;
}

您最终会得到一张包含5个条目的地图。每个条目都将包含所提供范围内的成绩列表。