Java作业-输入学生成绩并排序
来源:互联网 发布:淘宝扶持政策 编辑:程序博客网 时间:2024/04/29 19:27
目标效果:
代码:
import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.swing.JTextField;/** * 编写一个应用程序,用户分别从两个文本框输入学生的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。 * @author Vivinia * */public class Student extends JFrame {JLabel lName,lScore; //姓名和成绩标签JTextField tName,tScore; //文本框JTextArea taShow; //用于显示的文本区域JButton bSubmit;JPanel pan;Map<String,String> studentMap,resultMap;//主函数public static void main(String[] args) { new Student();}//构造方法public Student() { init();click();}//初始化方法public void init() { lName=new JLabel("姓名"); //实例化lScore=new JLabel("成绩");tName=new JTextField(10);tScore=new JTextField(10);bSubmit=new JButton("确定");pan=new JPanel();taShow=new JTextArea();pan.add(lName); //控件组合pan.add(tName);pan.add(lScore);pan.add(tScore);pan.add(bSubmit);add(pan,BorderLayout.NORTH); //设置位置add(taShow, BorderLayout.CENTER);setTitle("统计学生姓名和分数"); //设置窗口基本属性setSize(400, 300);setVisible(true);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);validate();studentMap=new HashMap<String,String>(); //非窗口属性初始化}//确定按钮被点击private void click() {bSubmit.addActionListener(new ActionListener() { @Overridepublic void actionPerformed(ActionEvent e) {save();showMap();}});}//点击按钮调用的保存方法private void save() {studentMap.put(tName.getText(),tScore.getText());resultMap = sortMapByValue(studentMap); //按Value进行排序 tName.setText(""); //文本框内容清空tScore.setText("");}//按值排序public static Map<String, String> sortMapByValue(Map<String, String> map) {if (map == null || map.isEmpty()) {return null;}Map<String, String> sortedMap = new LinkedHashMap<String, String>();List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(map.entrySet()); //将元素存入List中,类型为entryCollections.sort(entryList, new MapValueComparator());Iterator<Map.Entry<String, String>> iter = entryList.iterator();Map.Entry<String, String> tmpEntry = null;while (iter.hasNext()) {tmpEntry = iter.next();sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue()); //将List中的元素遍历出来存入map}return sortedMap;}//打印列表private void showMap() {taShow.setText("");for(Map.Entry<String,String> entry:resultMap.entrySet()) {taShow.append("姓名:"+entry.getKey()+" 成绩:"+entry.getValue()+"\n");}}}//比较器类 class MapValueComparator implements Comparator<Map.Entry<String, String>> {public int compare(Entry<String, String> s1, Entry<String, String> s2) {return s1.getValue().compareTo(s2.getValue());}}
按值排序有点麻烦,思想就是将map中元素遍历出来,使用sort即自定义比较器进行排序,然后重新存入map。
阅读全文
0 0
- Java作业-输入学生成绩并排序
- 输入学生成绩并排序
- java实验题——学生成绩排序并打印
- java作业之输入十个学生的成绩求平均分。。。
- 输入学生的姓名学号成绩,并按平均分由低到高排序
- 综合排序 学生信息输入并排序 键盘录入信息 (姓名,语文成绩,数学成绩,英语成绩),按总分高到低输出
- Java实例-输入学生成绩,计算出平均分,并判断及格人数和不及格人数
- Linux-C基础知识学习:C语言作业-输入某个学生的信息(姓名,年龄,5门功课成绩),计算平均成绩并输出。(待完善)
- java集合框架之学生成绩排序
- 输入两个学生的名字和成绩并输出
- 判断输入学生成绩是否有效并判断等级
- 实现键盘的输入学生成绩,并判断是否有效.
- 判断输入学生成绩是否有效并判断等级
- 输入统计学生成绩
- 输入学生成绩,输出学生成绩
- 从键盘上输入学生成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。
- 学生成绩排序
- 学生成绩排序
- WeiPHP 环境搭建
- springboot源码分析7-环境属性构造过程(上)
- 11月学习总结
- windows创建定时任务执行python脚本
- 创建springboot项目报这个错,哪个大神知道是为什么?
- Java作业-输入学生成绩并排序
- 常用的几个网络api
- python精简笔记(六)——内置模块介绍
- html select 标签使用disabled,但又要提交数据的解决
- java 23种设计模式 深入理解
- 作业
- Spark源码学习- SparkContext
- Spark 2.1.0 大数据平台源码分析:章节序列
- NIO-BufferDemo