**

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 分)相关推荐

  1. 7-2 sdust-Java-学生成绩读取与排序 (20 分)

    7-2 sdust-Java-学生成绩读取与排序 (20 分) 1)从键盘录入多行学生成绩的信息,每行表示一个学生的一门课的成绩,最后一行以"exit"结束.每行文本的格式为:学号 ...

  2. 7-5 sdust-Java-学生成绩读取与排序 (22分)

    1)从键盘录入多行学生成绩的信息,每行表示一个学生的一门课的成绩,最后一行以"exit"结束.每行文本的格式为:学号,姓名,课程名,成绩.程序能够读取学生及其成绩,将具有相同学号的 ...

  3. 7-23 sdust-Java-学生成绩读取与排序 (10 分)

    1)从键盘录入多行学生成绩的信息,每行表示一个学生的一门课的成绩,最后一行以"exit"结束.每行文本的格式为:学号,姓名,课程名,成绩.程序能够读取学生及其成绩,将具有相同学号的 ...

  4. 7-4 sdust-Java-学生成绩读取与排序 (35分)CSDN-markdown编辑器

    需要学习的知识 1.容器List 2.String的split方法 3.包装器类Integer 在这里插入代码片 package homework; import java.util.*;class ...

  5. java学生成绩教务管理系统

    1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目,java学生成绩教务管理系统. 计算机毕业生设计,课程设计需要帮助的可以找我 2 设计概要 21世纪是信息化时代,随着信息技术和网络技术的发 ...

  6. continue的使用,循环录入Java课学生成绩,统计大于等于80分的学生百分比-比例

    import java.util.Scanner;//continue的使用,循环录入Java课学生成绩,统计大于等于80分的学生百分比-比例 public class CopyOfCalcAvg { ...

  7. 【源码+教程】Java学生成绩在线管理项目_Java实战项目_Java开源项目_Java毕设项目_Java毕业设计_计算机毕业设计_Java项目开发

    今天为大家带来的是Java实战项目--学生成绩在线管理,可以用来做毕业设计喔~源码和教程就在下方.请大家查收~[源码+教程]Java学生成绩在线管理项目_Java实战项目_Java开源项目_Java毕 ...

  8. 计算学生成绩的最高分、最低分和平均分(数组全是方法)

    代码: 1 package com.mon10.day24; 2 3 import java.util.Scanner; 4 5 /** 6 * 类说明 :计算学生成绩的最高分.最低分和平均分 7 * ...

  9. java学生成绩管理_java开发的简易学生成绩管理系统

    经过1个月的紧张学习和应用,终于做出了这个简易的学生成绩管理系统. 代码如下(仅供参考学习) view包下的菜单 package com.xujulong.www.view: import java. ...

最新文章

  1. 算法设计思想(5)— 递归法
  2. [Cocos2d-x For WP8]ActionManager动作管理
  3. Win10如何远程连接Windows Server 2008,以及提示“您的凭证不工作”问题解决
  4. map:map指向最后一个元素?指向第一个元素?
  5. 重磅!腾讯云首次披露自研业务上云历程
  6. graphql-yoga的安装步骤
  7. 修改Advance Template Jsp模板的编码格式
  8. 终极JPA查询和技巧列表–第1部分
  9. android 热门开源库,GitHub安卓热门开源资源在项目中的使用及项目总结
  10. 基于机器视觉技术的瓷砖分色检测系统解析
  11. JavaScript是什么
  12. 移动端中 H5输入框在弹起键盘后被遮挡
  13. 联通iptv机顶盒中心服务器连接异常,联通iptv机顶盒连接安装 联通iptv机顶盒使用...
  14. 【生物信息学】ATAC-seq流程及代码分析、复现文章
  15. TCA9548A IIC多路扩展模块使用
  16. 计算机毕业设计Django毕业设计论文源代码服装展示平台电商商城购物系统
  17. 超算计算机能不能玩游戏,拿神威太湖之光玩游戏会怎么样?
  18. 小能手英语口语学习笔记
  19. C语言的快乐-表白代码
  20. ad18放置标尺(测量)

热门文章

  1. 【Hive】left semi join(exists、in)和 left join 区别
  2. 计算机科学导论【第四版】读书笔记 (一)
  3. AT32F415 AT32F421 ERTC 时间戳的使用
  4. Linux下的终端中用shell命令打开文件夹窗口
  5. Unity3d 在 twitter 转载(周报) UniteLA大会 和 Unity2019版本的Roadmap路线图
  6. c语言限速编程,一种基于c语言的列车限速曲线计算方法和装置的制造方法
  7. Linux那些事儿之Linux sysfs -- 剖析版本虽旧,桃花依旧笑春风
  8. 工业级无线路由器无线客户端的配置教程
  9. 100个世界上鲜为人知的“常识”
  10. yocto的bitbake过程记录