import java.util.*;<br><br>public class Main {<br> public static void main(String[] args) {<br> Scanner input = new Scanner(System.in);<br> HashMap<String,String> hashMap = new HashMap<String,String>();<br> while(true)<br> {<br> String str = input.nextLine();<br> if(str.equals("end"))<br> {<br> break;<br> }<br> String str1[] = str.split(" ");<br> String no = str1[0];<br> String name = str1[1];<br> String grade = str1[2];<br> hashMap.put(no,name+" "+grade);<br> }<br> List<String> studentIds = new ArrayList<>(hashMap.keySet());<br><br> // 按学号从大到小排序<br> Collections.sort(studentIds, (s1, s2) -> Integer.parseInt(s2) - Integer.parseInt(s1));<br><br> // 输出学生信息<br> for (String studentId : studentIds) {<br> String studentInfo = hashMap.get(studentId);<br> System.out.println(studentId + " " + studentInfo);<br> }<br> }<br>}
复制代码
排序
复制代码
本次的代码较短且复杂度很低,在此不赘述其类图以及圈复杂度分析。<br>这次作业中难度较大的是课程成绩统计程序-2,下面是这道题目的介绍和分析。<br>7-3 课程成绩统计程序-2分数 60全屏浏览题目切换布局作者 蔡轲单位 南昌航空大学课程成绩统计程序-2在第一次的基础上增加了实验课,以下加粗字体显示为本次新增的内容。<br>某高校课程从性质上分为:必修课、选修课、实验课,从考核方式上分为:考试、考察、实验。<br>考试的总成绩由平时成绩、期末成绩分别乘以权重值得出,比如平时成绩权重0.3,期末成绩权重0.7,总成绩=平时成绩*0.3+期末成绩*0.7。<br>考察的总成绩直接等于期末成绩<br>实验的总成绩等于课程每次实验成绩的平均分<br>必修课的考核方式必须为考试,选修课可以选择考试、考察任一考核方式。实验课的成绩必须为实验。<br>1、输入:<br>包括课程、课程成绩两类信息。<br>课程信息包括:课程名称、课程性质、考核方式(可选,如果性质是必修课,考核方式可以没有)三个数据项。<br>课程信息格式:课程名称+英文空格+课程性质+英文空格+考核方式<br>课程性质输入项:必修、选修、实验<br>考核方式输入选项:考试、考察、实验<br>考试/考查课程成绩信息包括:学号、姓名、课程名称、平时成绩(可选)、期末成绩<br>考试/考查课程信息格式:学号+英文空格+姓名+英文空格+课程名称+英文空格+平时成绩+英文空格+期末成绩<br>实验课程成绩信息包括:学号、姓名、课程名称、实验次数、每次成绩<br>实验次数至少4次,不超过9次<br>实验课程信息格式:学号+英文空格+姓名+英文空格+课程名称+英文空格+实验次数+英文空格+第一次实验成绩+...+英文空格+最后一次实验成绩<br>以上信息的相关约束:<br>1)平时成绩和期末成绩的权重默认为0.3、0.7<br>2)成绩是整数,不包含小数部分,成绩的取值范围是【0,100】<br>3)学号由8位数字组成<br>4)姓名不超过10个字符<br>5)课程名称不超过10个字符<br>6)不特别输入班级信息,班级号是学号的前6位。<br>2、输出:<br>输出包含三个部分,包括学生所有课程总成绩的平均分、单门课程成绩平均分、单门课程总成绩平均分、班级所有课程总成绩平均分。<br>为避免误差,平均分的计算方法为累加所有符合条件的单个成绩,最后除以总数。<br>1)学生课程总成绩平均分按学号由低到高排序输出<br>格式:学号+英文空格+姓名+英文空格+总成绩平均分<br>如果某个学生没有任何成绩信息,输出:学号+英文空格+姓名+英文空格+"did not take any exams"<br>2)单门课程成绩平均分分为三个分值:平时成绩平均分(可选)、期末考试平均分、总成绩平均分,按课程名称的字符顺序输出<br>考试/考察课程成绩格式:课程名称+英文空格+平时成绩平均分+英文空格+期末考试平均分+英文空格+总成绩平均分<br>实验课成绩格式:课程名称+英文空格+总成绩平均分<br>如果某门课程没有任何成绩信息,输出:课程名称+英文空格+"has no grades yet"<br>3)班级所有课程总成绩平均分按班级由低到高排序输出<br>格式:班级号+英文空格+总成绩平均分<br>如果某个班级没有任何成绩信息,输出:班级名称+英文空格+ "has no grades yet"<br>异常情况:<br>1)如果解析某个成绩信息时,课程名称不在已输入的课程列表中,输出:学号+英文空格+姓名+英文空格+":"+课程名称+英文空格+"does not exist"<br>2)如果解析某个成绩信息时,输入的成绩数量和课程的考核方式不匹配,输出:学号+英文空格+姓名+英文空格+": access mode mismatch"<br>以上两种情况如果同时出现,按第一种情况输出结果。<br>3)如果解析某个课程信息时,输入的课程性质和课程的考核方式不匹配,输出:课程名称+" : course type & access mode mismatch"<br>4)格式错误以及其他信息异常如成绩超出范围等,均按格式错误处理,输出"wrong format"<br>5)若出现重复的课程/成绩信息,只保留第一个课程信息,忽略后面输入的。<br>信息约束:<br>1)成绩平均分只取整数部分,小数部分丢弃<br>参考类图(与第一次相同,其余内容自行补充):<br><br><br> <br><br>输入样例1:<br><br>在这里给出一组输入。例如:<br>
[/code][size=5]PTA第八次作业[/size]<br><br> <br>7-2 课程成绩统计程序-3分数 64全屏浏览题目切换布局作者 蔡轲单位 南昌航空大学课程成绩统计程序-3在第二次的基础上修改了计算总成绩的方式,<br>要求:修改类结构,将成绩类的继承关系改为组合关系,成绩信息由课程成绩类和分项成绩类组成,课程成绩类组合分项成绩类,分项成绩类由成绩分值和权重两个属性构成。<br>完成课程成绩统计程序-2、3两次程序后,比较继承和组合关系的区别。思考一下哪一种关系运用上更灵活,更能够适应变更。<br>题目最后的参考类图未做修改,大家根据要求自行调整,以下内容加粗字体显示的内容为本次新增的内容。<br>某高校课程从性质上分为:必修课、选修课、实验课,从考核方式上分为:考试、考察、实验。<br>考试的总成绩由平时成绩、期末成绩分别乘以权重值得出,比如平时成绩权重0.3,期末成绩权重0.7,总成绩=平时成绩*0.3+期末成绩*0.7。<br>考察的总成绩直接等于期末成绩<br>实验的总成绩等于课程每次实验成绩乘以权重后累加而得。<br>课程权重值在录入课程信息时输入。(注意:所有分项成绩的权重之和应当等于1)<br>必修课的考核方式必须为考试,选修课可以选择考试、考察任一考核方式。实验课的成绩必须为实验。<br>1、输入:<br>包括课程、课程成绩两类信息。<br>课程信息包括:课程名称、课程性质、考核方式、分项成绩数量、每个分项成绩的权重。<br>考试课信息格式:课程名称+英文空格+课程性质+英文空格+考核方式+英文空格+平时成绩的权重+英文空格+期末成绩的权重<br>考察课信息格式:课程名称+英文空格+课程性质+英文空格+考核方式<br>实验课程信息格式:课程名称+英文空格+课程性质+英文空格+考核方式+英文空格+分项成绩数量n+英文空格+分项成绩1的权重+英文空格+。。。+英文空格+分项成绩n的权重<br>实验次数至少4次,不超过9次<br>课程性质输入项:必修、选修、实验<br>考核方式输入选项:考试、考察、实验<br>考试/考查课程成绩信息包括:学号、姓名、课程名称、平时成绩(可选)、期末成绩<br>考试/考查课程成绩信息格式:学号+英文空格+姓名+英文空格+课程名称+英文空格+平时成绩+英文空格+期末成绩<br>实验课程成绩信息包括:学号、姓名、课程名称、每次成绩{在系列-2的基础上去掉了(实验次数),实验次数要和实验课程信息中输入的分项成绩数量保持一致}<br>实验课程信息格式:学号+英文空格+姓名+英文空格+课程名称+英文空格+第一次实验成绩+...+英文空格+最后一次实验成绩<br>以上信息的相关约束:<br>1)成绩是整数,不包含小数部分,成绩的取值范围是【0,100】<br>2)学号由8位数字组成<br>3)姓名不超过10个字符<br>4)课程名称不超过10个字符<br>5)不特别输入班级信息,班级号是学号的前6位。<br>2、输出:<br>输出包含三个部分,包括学生所有课程总成绩的平均分、单门课程总成绩平均分、班级所有课程总成绩平均分。<br>为避免四舍五入误差,<br>计算单个成绩时,分项成绩乘以权重后要保留小数位,计算总成绩时,累加所有分项成绩的权重分以后,再去掉小数位。<br>学生总成绩/整个班/课程平均分的计算方法为累加所有符合条件的单个成绩,最后除以总数。<br>1)学生课程总成绩平均分按学号由低到高排序输出<br>格式:学号+英文空格+姓名+英文空格+总成绩平均分<br>如果某个学生没有任何成绩信息,输出:学号+英文空格+姓名+英文空格+"did not take any exams"<br>2)单门课程成绩按课程名称的字符顺序输出<br>课程成绩输出格式:课程名称+英文空格+总成绩平均分<br>如果某门课程没有任何成绩信息,输出:课程名称+英文空格+"has no grades yet"<br>3)班级所有课程总成绩平均分按班级由低到高排序输出<br>格式:班级号+英文空格+总成绩平均分<br>如果某个班级没有任何成绩信息,输出:班级名称+英文空格+ "has no grades yet"<br>异常情况:<br>1)如果解析某个成绩信息时,课程名称不在已输入的课程列表中,输出:学号+英文空格+姓名+英文空格+":"+课程名称+英文空格+"does not exist"<br>2)如果解析某个成绩信息时,输入的成绩数量和课程的考核方式不匹配,输出:学号+英文空格+姓名+英文空格+": access mode mismatch"<br>以上两种情况如果同时出现,按第一种情况输出结果。<br>3)如果解析某个课程信息时,输入的课程性质和课程的考核方式不匹配,输出:课程名称+" : course type & access mode mismatch"<br>4)格式错误以及其他信息异常如成绩超出范围等,均按格式错误处理,输出"wrong format"<br>5)若出现重复的课程/成绩信息,只保留第一个课程信息,忽略后面输入的。<br>6)如果解析实验课程信息时,输入的分项成绩数量值和分项成绩权重的个数不匹配,输出:课程名称+" : number of scores does not match"<br>7)如果解析考试课、实验课时,分项成绩权重值的总和不等于1,输出:课程名称+" : weight value error"<br>信息约束:<br>1)成绩平均分只取整数部分,小数部分丢弃<br>参考类图(与第一次相同,其余内容自行补充):<br>[img]https://images.ptausercontent.com/18cbcefd-ca7d-4d8e-a0ac-f99f761ded15.png[/img]<br>[size=4]输入样例1:[/size]<br><br>在这里给出一组输入。例如:<br>[code]java 实验 实验 4 0.2 0.3 0.2 0.3<br>end<br>
[/code][code]public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); String color = input.next(); int layer = input.nextInt(); double side = input.nextDouble(); RubikCube cube1 = new SquareCube(color, layer,new Cube(side)); color = input.next(); layer = input.nextInt(); side = input.nextDouble(); RubikCube cube2 = new RegularPyramidCube(color, layer,new RegularPyramid(side)); display(cube1); display(cube2); }}<br>
[code][/code][code]import java.util.Scanner;class SalesOrder { private int lockCount; private int stockCount; private int barrelCount; private static final int LOCK_PRICE = 45; private static final int STOCK_PRICE = 30; private static final int BARREL_PRICE = 25; public SalesOrder(int lockCount, int stockCount, int barrelCount) { if ((lockCount > 70 || stockCount > 80 || barrelCount > 90)||(lockCount