7-2 sdust-Java-学生成绩读取与排序 (8 分)
**
7-2 sdust-Java-学生成绩读取与排序 (8 分)
**
1)从键盘录入多行学生成绩的信息,每行表示一个学生的一门课的成绩,最后一行以“exit”结束。每行文本的格式为:学号,姓名,课程名,成绩。程序能够读取学生及其成绩,将具有相同学号的学生及其成绩读取到一个Student(学生类)类对象的列表(List)stuList中; 2)程序在读取完学生及其成绩的数据后,能够将stuList中的学生按照平均成绩降序排列(如果平均成绩相同,学号数字小的排在前面), 并输出排序后的学生学号、姓名和成绩。
输入格式:
多行表示的学生成绩,每一行是一个学生的姓名、学号、课程名、成绩(整数)。不同行可以是同一名学生(学号相同的为同一名学生)不同课程的成绩。
输出格式:
按照学生平均成绩降序排序(平均成绩相同的学号小的在前面)的学生排名(具体输出格式参照样例)。
输入样例:
小明,2001,Java,88
小刚,2002,Java,78
小丁,2003,Java,56
小宏,2004,Java,85
小明,2001,Python,84
小刚,2002,Python,98
小丁,2003,JavaWeb,66
小宏,2004,Algorithm,87
exit
输出样例:
No1:2002,小刚
No2:2001,小明
No3:2004,小宏
No4:2003,小丁
分析:本身题目并不算什么难题,题目关键点在于对于输入的学生信息的判断,如果学生信息已经存在就需要我们将其添加到已经有的集合中去,
而如果并不存在那么便需要创建一个新的对象并把它放入集合中。
(中间注释掉的部分是当初在调试时所加入的调试点,以及调试用的方法)
import java.util.*;
class Student implements Comparable<Student>{private String name,id;private int subject=1;private int score;private double sum=0;Student(){}Student(String name,String id,int score){this.name=name;this.id=id;this.score=score;}public String getid(){return this.id;}public void subjectadd() {this.subject++;}public void scoreadd(int score){this.score=this.score+score;}public String getname() {return this.name;}public void sum() {this.sum=this.score/this.subject;}/*public int rescore() {return this.score;}*//* public double getsum(){return this.sum;}*/public int compareTo(Student o1){Student one = (Student) o1;if(this.sum-one.sum!=0)return (int)(one.sum-this.sum);elsereturn this.id.compareTo(one.id);}
}
public class Main{public static void main(String[] args) {Scanner sc=new Scanner(System.in);List<Student> list =new ArrayList<Student>();int i,flag=0;String k;String[] and =new String[5];while(sc.hasNext()){k=sc.next();and=k.split(",");if(k.compareTo("exit")==0)break;for(i=0;i<list.size();i++){if(list.get(i).getid().compareTo(and[1])==0){flag=1;break;}}if(flag==1){list.get(i).subjectadd();list.get(i).scoreadd(Integer.parseInt(and[3]));}else{list.add(new Student(and[0],and[1],Integer.parseInt(and[3])));}flag=0;}for(i=0;i<list.size();i++)list.get(i).sum();Collections.sort(list);for(i=0;i<list.size();i++){System.out.println("No"+(i+1)+":"+list.get(i).getid()+","+list.get(i).getname());//System.out.println(list.get(i).rescore());}}
}
import java.util.Arrays;
import java.util.Scanner;
import java.util.*;
7-2 sdust-Java-学生成绩读取与排序 (8 分)相关推荐
- 7-2 sdust-Java-学生成绩读取与排序 (20 分)
7-2 sdust-Java-学生成绩读取与排序 (20 分) 1)从键盘录入多行学生成绩的信息,每行表示一个学生的一门课的成绩,最后一行以"exit"结束.每行文本的格式为:学号 ...
- 7-5 sdust-Java-学生成绩读取与排序 (22分)
1)从键盘录入多行学生成绩的信息,每行表示一个学生的一门课的成绩,最后一行以"exit"结束.每行文本的格式为:学号,姓名,课程名,成绩.程序能够读取学生及其成绩,将具有相同学号的 ...
- 7-23 sdust-Java-学生成绩读取与排序 (10 分)
1)从键盘录入多行学生成绩的信息,每行表示一个学生的一门课的成绩,最后一行以"exit"结束.每行文本的格式为:学号,姓名,课程名,成绩.程序能够读取学生及其成绩,将具有相同学号的 ...
- 7-4 sdust-Java-学生成绩读取与排序 (35分)CSDN-markdown编辑器
需要学习的知识 1.容器List 2.String的split方法 3.包装器类Integer 在这里插入代码片 package homework; import java.util.*;class ...
- java学生成绩教务管理系统
1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目,java学生成绩教务管理系统. 计算机毕业生设计,课程设计需要帮助的可以找我 2 设计概要 21世纪是信息化时代,随着信息技术和网络技术的发 ...
- continue的使用,循环录入Java课学生成绩,统计大于等于80分的学生百分比-比例
import java.util.Scanner;//continue的使用,循环录入Java课学生成绩,统计大于等于80分的学生百分比-比例 public class CopyOfCalcAvg { ...
- 【源码+教程】Java学生成绩在线管理项目_Java实战项目_Java开源项目_Java毕设项目_Java毕业设计_计算机毕业设计_Java项目开发
今天为大家带来的是Java实战项目--学生成绩在线管理,可以用来做毕业设计喔~源码和教程就在下方.请大家查收~[源码+教程]Java学生成绩在线管理项目_Java实战项目_Java开源项目_Java毕 ...
- 计算学生成绩的最高分、最低分和平均分(数组全是方法)
代码: 1 package com.mon10.day24; 2 3 import java.util.Scanner; 4 5 /** 6 * 类说明 :计算学生成绩的最高分.最低分和平均分 7 * ...
- java学生成绩管理_java开发的简易学生成绩管理系统
经过1个月的紧张学习和应用,终于做出了这个简易的学生成绩管理系统. 代码如下(仅供参考学习) view包下的菜单 package com.xujulong.www.view: import java. ...
最新文章
- 算法设计思想(5)— 递归法
- [Cocos2d-x For WP8]ActionManager动作管理
- Win10如何远程连接Windows Server 2008,以及提示“您的凭证不工作”问题解决
- map:map指向最后一个元素?指向第一个元素?
- 重磅!腾讯云首次披露自研业务上云历程
- graphql-yoga的安装步骤
- 修改Advance Template Jsp模板的编码格式
- 终极JPA查询和技巧列表–第1部分
- android 热门开源库,GitHub安卓热门开源资源在项目中的使用及项目总结
- 基于机器视觉技术的瓷砖分色检测系统解析
- JavaScript是什么
- 移动端中 H5输入框在弹起键盘后被遮挡
- 联通iptv机顶盒中心服务器连接异常,联通iptv机顶盒连接安装 联通iptv机顶盒使用...
- 【生物信息学】ATAC-seq流程及代码分析、复现文章
- TCA9548A IIC多路扩展模块使用
- 计算机毕业设计Django毕业设计论文源代码服装展示平台电商商城购物系统
- 超算计算机能不能玩游戏,拿神威太湖之光玩游戏会怎么样?
- 小能手英语口语学习笔记
- C语言的快乐-表白代码
- ad18放置标尺(测量)
热门文章
- 【Hive】left semi join(exists、in)和 left join 区别
- 计算机科学导论【第四版】读书笔记 (一)
- AT32F415 AT32F421 ERTC 时间戳的使用
- Linux下的终端中用shell命令打开文件夹窗口
- Unity3d 在 twitter 转载(周报) UniteLA大会 和 Unity2019版本的Roadmap路线图
- c语言限速编程,一种基于c语言的列车限速曲线计算方法和装置的制造方法
- Linux那些事儿之Linux sysfs -- 剖析版本虽旧,桃花依旧笑春风
- 工业级无线路由器无线客户端的配置教程
- 100个世界上鲜为人知的“常识”
- yocto的bitbake过程记录