java - 你如何按等级对数组的值进行排序(例如 85-100 是 A 70-84 是 B 等)
问题描述
我正在开发一个将值存储在 ArrayList 中的程序,并且需要按 R、1、2、3 和 4 等相应等级对它们进行排序。如何获取数组中的值并以这种方式对它们进行排序?
我基本上什么都没试过,因为我很困惑。
public class MarksProgramUI extends javax.swing.JFrame {
List<Integer> marksFinal = new ArrayList<>();
private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {
String marks = markInput.getText();
int marksnum;
marksnum = Integer.parseInt(marks);
marksFinal.add(marksnum);
Collections.sort(marksFinal);
String output = " ";
for ( int i=0;i<marksFinal.size();i++){
output=output+marksFinal.get(i) + " ";
}
markOutput.setText(output + " " );
}
private void analyseButtonActionPerformed(java.awt.event.ActionEvent evt) {
resultOutput.setText("Class Average: " + calculateAverage(marksFinal) + "\n" + "Maximum Mark: " + calculateMaxValues(marksFinal) + "\n" + "Minimum Mark: " + calculateMinValues(marksFinal) + "\n");
}
解决方案
通过“排序”,我假设您的意思是“分组依据”。您可以将标记分组为:-
List<Integer> marks = List.of(86, 74, 90, 40); //some dummy list of marks
Map<String, List<Integer>> map = marks.stream()
.collect(Collectors.groupingBy(o -> {
if (o < 50) return "F"; //assign grade 'F' to marks less than 50
if (o < 65) return "1"; //assign grade '1' to marks from 50 to 64
if (o < 75) return "2"; //65 to 74
return "R"; //grade 'R' to 75 and above
}));
System.out.println(map);
输出
{2=[74], R=[86, 90], F=[40]}
正如您在上面看到的,分数 86 和 90 被归为“R”级。
您可以更改上述if
条件以满足您的需要。
推荐阅读
- sql - 仅当值存在时,如何从带有 WHERE 子句的连接表中进行选择?
- javascript - JS while循环在&&之后没有读取条件
- swagger-2.0 - Power Automate 自定义连接器测试认为文件输出是一个字符串
- javascript - 如何在 XMLHttpRequest 之后返回 Promise
- algorithm - 红黑树删除行为
- javascript - 使用 node-ffi 加载本地 dll:没有这样的文件
- npm - Npm 不安装 firebase 包?
- reactjs - 使用 npx create-react-app my-app 创建 react.js 应用程序时出错
- git - 如何将本地开发代码与远程合并
- c++ - 如何为固定数量的线程计算均匀分布的作业数?