我的任务是创建一个程序来列出输入的学生成绩然后找到平均,最高分,最低分,然后列出有多少学生是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();
}
答案 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个条目的地图。每个条目都将包含所提供范围内的成绩列表。