最新要闻
- 环球热点评!留给“牛粉”的时间不多了!兰博基尼宣布:Urus将于五年内变为纯电车型
- 25万美元一趟值吗?致5死泰坦号潜艇内部曝光:没凳子只能盘腿坐 马桶是最佳座位
- 云南上线购车送油券活动:每车2500元 可在中石油、中石化消费
- 缅北电诈愈演愈烈,人口贩卖已成全球性危机 焦点快播
- 产业强市|安能智慧物流产业联盟暨苏皖区域总部即将落户句容 焦点快报
- 山东已出现43℃以上高温 多地异常高温到底是什么原因?专家揭秘
- 上海高考分数线公布 :本科405分 官方:不会对成绩进行排名
- 汉语为桥 粽情西岸 当前热点
- 天天观点:究竟是驼背还是翘臀?全新奔驰GLC轿跑SUV插电混动版来了
- 马斯克和扎克伯格约架 马斯克母亲:确认取消了|世界视点
- 迪凡车业为旗下跃歌品牌保驾护航
- 理想L系列经常充到100%伤车吗? 李想:不会 放心用 电池寿命大于车|焦点快看
- 世界播报:浙江一男子躲雨后将屋主晒的菜踢到雨中 三观尽毁:网友称坏到骨子里
- 景区网红大雁被游客踢中要害离世 吓着孩子:网友愤怒 应重罚 世界动态
- 全球短讯!Win11最近一个月卡爆了!CPU占用高元凶终于找到:微软认错
- 内江第十一届大千龙舟文化节市中区端午民俗活动举行|独家
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
每日看点!BLOG-3----22206117
这次博客主要讨论3个成绩课程成绩成绩系统:
由于这几次基本都是满分,所以只是简单讨论讨论我的踩坑心得和代码思路!
(相关资料图)
分别是1-2-3,这一次依旧是以一为主,二和三的难度都是在1的程度上进行增加的.
这是成绩统计系统1的题目和代码:
某高校课程从性质上分为:必修课、选修课,从考核方式上分为:考试、考察。
考试的总成绩由平时成绩、期末成绩分别乘以权重值得出,比如平时成绩权重0.3,期末成绩权重0.7,总成绩=平时成绩*0.3+期末成绩*0.7。
考察的总成绩直接等于期末成绩
必修课的考核方式必须为考试,选修课可以选择考试、考察任一考核方式。
1、输入:
包括课程、课程成绩两类信息。
课程信息包括:课程名称、课程性质、考核方式(可选,如果性质是必修课,考核方式可以没有)三个数据项。
课程信息格式:课程名称+英文空格+课程性质+英文空格+考核方式
课程性质输入项:必修、选修
考核方式输入选项:考试、考察
课程成绩信息包括:学号、姓名、课程名称、平时成绩(可选)、期末成绩
课程信息格式:学号+英文空格+姓名+英文空格+课程名称+英文空格+平时成绩+英文空格+期末成绩
以上信息的相关约束:
1)平时成绩和期末成绩的权重默认为0.3、0.7
2)成绩是整数,不包含小数部分,成绩的取值范围是【0,100】
3)学号由8位数字组成
4)姓名不超过10个字符
5)课程名称不超过10个字符
6)不特别输入班级信息,班级号是学号的前6位。
2、输出:
输出包含三个部分,包括学生所有课程总成绩的平均分、单门课程成绩平均分、单门课程总成绩平均分、班级所有课程总成绩平均分。
为避免误差,平均分的计算方法为累加所有符合条件的单个成绩,最后除以总数。
1)学生课程总成绩平均分按学号由低到高排序输出
格式:学号+英文空格+姓名+英文空格+总成绩平均分
如果某个学生没有任何成绩信息,输出:学号+英文空格+姓名+英文空格+"did not take any exams"
2)单门课程成绩平均分分为三个分值:平时成绩平均分(可选)、期末考试平均分、总成绩平均分,按课程名称的字符顺序输出
格式:课程名称+英文空格+平时成绩平均分+英文空格+期末考试平均分+英文空格+总成绩平均分
如果某门课程没有任何成绩信息,输出:课程名称+英文空格+"has no grades yet"
3)班级所有课程总成绩平均分按班级由低到高排序输出
格式:班级号+英文空格+总成绩平均分
如果某个班级没有任何成绩信息,输出:班级名称+英文空格+ "has no grades yet"
异常情况:
1)如果解析某个成绩信息时,课程名称不在已输入的课程列表中,输出:学号+英文空格+姓名+英文空格+":"+课程名称+英文空格+"does not exist"
2)如果解析某个成绩信息时,输入的成绩数量和课程的考核方式不匹配,输出:学号+英文空格+姓名+英文空格+": access mode mismatch"
以上两种情况如果同时出现,按第一种情况输出结果。
3)如果解析某个课程信息时,输入的课程性质和课程的考核方式不匹配,输出:课程名称+" : course type & access mode mismatch"
4)格式错误以及其他信息异常如成绩超出范围等,均按格式错误处理,输出"wrong format"
5)若出现重复的课程/成绩信息,只保留第一个课程信息,忽略后面输入的。
信息约束:
1)成绩平均分只取整数部分,小数部分丢弃
代码:
package 课程成绩统计分析系统;import java.util.ArrayList;import java.util.List;import java.util.Scanner;import java.util.concurrent.atomic.AtomicInteger;import java.util.Collections;import java.util.Comparator;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int juddgeexist=0; Course cou__cou = new Course(null, null, null); Student stu__stu = new Student(null, null); grade gra_gra=new grade(null); String five="^(\\d{8})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([0-9]|[1-9][0-9]|100)\\s+([0-9]|[1-9][0-9]|100)$"; String four="^(\\d{8})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([0-9]|[1-9][0-9]|100)$"; Chosecoure date = new Chosecoure(); int cont = 0; while (in.hasNextLine()) { String a = in.nextLine().trim(); String[] b = a.split(" "); int length = b.length; int iq = 0; if (a.equals("end")) break; else { if (length == 2) { Course c = new Course(b[0], b[1]); if (c.课程性质和课程的考核方式匹配()) { for (Course e : date.course) { if (e.name.equals(b[0]) && e.nature.equals(b[1])) { iq=1; break; } else{ iq=0; } } if(iq==0) { date.course.add(c); } } } if (length == 3) { Course c = new Course(b[0], b[1], b[2]); if (c.课程性质和课程的考核方式匹配()) { for (Course e : date.course) { if (e.name.equals(b[0]) && e.nature.equals(b[1])&&e.assessment.equals(b[3])) { iq=1; break; } else{ iq=0; } } if(iq==0) { date.course.add(c); } } } if (length == 4 || length == 5) { if (length == 4) { Score sco = new Score(b[0], b[1], b[2], -1, Integer.parseInt(b[3])); Student stu = new Student(b[0],b[1]); if (sco.存在这个课程(b[2], date.course) == true && sco.成绩数量匹配考核方式(b[2], date.course) == true&&a.matches(four))//判断数据是否合法 { if(cont==0) { sco.dailyScore=0; sco.decidecourse(date.course); date.score.add(sco); sco.dailyScore=-1; date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); cont++; } for (Score e : date.score) { if (e.number.equals(b[0]) && e.name.equals(b[1]) && e.course.name.equals(b[2]) && e.dailyScore == -1&&e.examScore == Integer.parseInt(b[3])) { break; } else { sco.dailyScore=0; sco.decidecourse(date.course); date.score.add(sco);//将学生的成绩存入数据库成绩 // stu.student_score.add(sco);//存储数据将学生的成绩存到学生里面 date.student.add(stu);//存储数据将学生存入数据库 for (grade m : date.grades) { if (m.gradenumber.equals(gra_gra.getgradenumber(b[0]))) { juddgeexist=1; break; } else{ juddgeexist=0; } } if(juddgeexist==0) date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); break; } } } else if (!sco.存在这个课程(b[2], date.course) && !sco.成绩数量匹配考核方式(b[2], date.course)) { System.out.println(b[2] + " does not exist"); date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); } else if (!sco.存在这个课程(b[2], date.course)) { System.out.println(b[2] + " does not exist"); date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); } else if (!sco.成绩数量匹配考核方式(b[2], date.course)) { System.out.println(b[0] + " " + b[1] + " : access mode mismatch"); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); date.student.add(stu); } else if(!a.matches(four)) { System.out.println("wrong format"); } } if (length == 5) { Score sco = new Score(b[0], b[1], b[2], Integer.parseInt(b[3]), Integer.parseInt(b[4])); Student stu = new Student(b[0],b[1]); if (sco.存在这个课程(b[2], date.course) == true && sco.成绩数量匹配考核方式(b[2], date.course) == true&&a.matches(five))//判断数据是否合法 { if(cont==0) { sco.decidecourse(date.course); date.score.add(sco); date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); cont++; } for (Score e : date.score) { if (e.number.equals(b[0]) && e.name.equals(b[1]) && e.course.name.equals(b[2]) && e.dailyScore == Integer.parseInt(b[3])&&e.examScore == Integer.parseInt(b[4])) { break; } else { date.score.add(sco);//将学生的成绩存入数据库成绩 sco.decidecourse(date.course); // stu.student_score.add(sco);//存储数据将学生的成绩存到学生里面 date.student.add(stu);//存储数据将学生存入数据库 for (grade m : date.grades) { if (m.gradenumber.equals(gra_gra.getgradenumber(b[0]))) { juddgeexist=1; break; } else{ juddgeexist=0; } } if(juddgeexist==0) date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); break; } } } else if (!sco.存在这个课程(b[2], date.course) && !sco.成绩数量匹配考核方式(b[2], date.course)) { System.out.println(b[2] + " does not exist"); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); date.student.add(stu); } else if (!sco.存在这个课程(b[2], date.course)) { date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); System.out.println(b[2] + " does not exist"); } else if (!sco.成绩数量匹配考核方式(b[2], date.course)) { date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); System.out.println(b[0] + " " + b[1] + " : access mode mismatch"); } else if(!a.matches(five)) { System.out.println("wrong format"); } } } } }//开始进行数据的处理了 for (Student e : date.student) { e.getStudenttotol(date.score); } int flag = 0; String num = "000"; for (Student q : date.student) { flag = 0; if(!num.equals(q.number)) flag = 1; num = q.number; if(flag == 1) { if (q.JudgeEmpty()) System.out.println(q.number + " " + q.name + " " + q.student_score); else System.out.println(q.number+" "+q.name+" "+"did not take any exams"); } } date.Course_and_Score(); date.output(); date.grade_score(date.score); date.grades.forEach((e)->{ if(e.size!=0) System.out.println(e.gradenumber+" "+e.grade_score); }); }}class Course{ String name; String nature; String assessment; int course_score=0; int course_dailyscore=0; int course_finalscore=0; int found=0; Course(String name,String nature,String assessment) { this.assessment=assessment; this.nature=nature; this.name=name; } Course(String name,String nature) { this.name=name; this.nature=nature; this.assessment="考试"; } boolean 课程性质和课程的考核方式匹配() { if(nature.equals("必修")&&assessment.equals("考察")) { System.out.println(name+" : course type & access mode mismatch"); return false; } else return true; }}class Score{ String number; String name; Course course = new Course(null,null,null); int dailyScore; int examScore; int flag=-1; Score(String number, String name, String coursename, int dailyScore, int examScore) { this.number=number; this.dailyScore=dailyScore; this.examScore=examScore; this.course.name=coursename; this.name=name; if(dailyScore==-1) this.flag=0; else { this.flag=1; } } void decidecourse(Listcourse){ course.forEach((e)->{ if(e.name.equals(this.course.name)) { this.course=e; } }); } int getFinalScore() { if(course.assessment.equals("考察")&&course.nature.equals("选修")) return examScore; else if(course.nature.equals("必修")) { return (int)(examScore*0.7+dailyScore*0.3); } else if(course.assessment.equals("考试")&&course.nature.equals("选修")) { return (int)(examScore*0.7+dailyScore*0.3); } else { return -1; } } boolean 存在这个课程(String name,List course){ boolean a=false; for (Course e : course) { if (name.equals(e.name)) { a = true; return a; } } return a; } boolean 成绩数量匹配考核方式(String name,List course){ boolean b = true; for (Course e : course) { if(e.name.equals(name)) { if (((e.assessment.equals("考察") && flag == 1) || (e.assessment.equals("考试") && flag == 0) || (e.nature.equals("必修") && flag == 0)) && (!e.assessment.equals("考察") && !e.nature.equals("考试"))) { b = false; break; } else { b = true; break; } } } return b; }}class Chosecoure { List score = new ArrayList<>(); List course = new ArrayList<>();// Map mp_student = new TreeMap<>(new Comparator () {// @Override// public int compare(String o1, String o2) {// return o1.compareTo(o2);// }// }); List student = new ArrayList<>();// Collections.sort(student, new Comparator () {// @Override// public int compare(Student s1, Student s2) {// return s2.getAge() - s1.getAge();// }// }); List grades=new ArrayList<>(); grade lmlm=new grade(null); int m = 0; void Course_and_Score() { for (Course f : course) { m = 0; for (Score e : score) { if (e.course.name.equals(f.name)) { f.course_score += e.getFinalScore(); f.course_dailyscore += e.dailyScore; f.course_finalscore += e.examScore; m++; } } if (m != 0) { f.course_score = f.course_score / m;//计算总成绩 f.course_finalscore = f.course_finalscore / m;//计算期末成绩平均分 f.course_dailyscore = f.course_dailyscore / m;//计算平时成绩平均分 } else { System.out.println(f.name + " has no grades yet"); f.found=1; } } }//课程的成绩,也就是把各科目的成绩先统一计算出来 void grade_score(List e) { grades.forEach((q)->{ e.forEach((p)->{ if(q.gradenumber.equals(lmlm.getgradenumber(p.number))) { q.grade_score+=p.getFinalScore(); q.size++; } }); if(q.size != 0) q.grade_score/=q.size; if(q.size==0) System.out.println(q.gradenumber+" has no grades yet"); }); } void output() { course.forEach((e) -> { { if ((e.assessment.equals("考试") || e.nature.equals("必修"))&&e.found==0) System.out.println(e.name + " " + e.course_dailyscore + " " + e.course_finalscore + " " + e.course_score); if (e.assessment.equals("考察")&&e.found==0) { System.out.println(e.name + " " + e.course_finalscore + " " + e.course_finalscore); } } }); }}class Student{ String number; String name; int student_score = 0; int student_score_size=0; Student(String number,String name) { this.number=number; this.name=name; } boolean JudgeEmpty(){ if(student_score_size==0) { return false; } else { return true; } } int getStudenttotol(List e){ e.forEach((f)->{ if(f.name.equals(name)&&f.number.equals(number)) { student_score+=f.getFinalScore(); student_score_size++; } }); if(student_score_size != 0) student_score=student_score/student_score_size; return student_score; }}class grade{ String gradenumber; grade(String gradenumber){ this.gradenumber=gradenumber; } int grade_score = 0; int size=0; String getgradenumber(String number){ this.gradenumber=number.substring(0,6); return gradenumber; }}
Parameter Value========= =====Project Directory C:\Users\Lenovo\IdeaProjects\untitled17\src\Project Name 5Checkpoint Name BaselineFile Name Main.javaLines 341Statements 139Percent Branch Statements 29.5Method Call Statements 50Percent Lines with Comments 35.2Classes and Interfaces 1Methods per Class 4.00Average Statements per Method 26.75Line Number of Most Complex Method 125Name of Most Complex Method Main.main()Maximum Complexity 38Line Number of Deepest Block 152Maximum Block Depth 6Average Block Depth 2.27Average Complexity 38.00
--------------------------------------------------------------------------------------------Most Complex Methods in 1 Class(es): Complexity, Statements, Max Depth, Calls
Main.main() 38, 67, 6, 33
--------------------------------------------------------------------------------------------Block Depth Statements
0 441 202 153 124 225 146 127 08 09+ 0
--------------------------------------------------------------------------------------------
这里我的代码分为5个类
分别是
Student类:Student类主要用来接收学生的信息,譬如学生学号和学生姓名同时还有学生的成绩.为什么会有学生的成绩呢?主要是我利用传进来的LIst成绩类来对比学号来进行成绩的添加,索性直接统计在学生类.
Course类:课程类,作为课程类,不仅要有存储课程信息的功能还要有判断是否合法,是否可以存入的判断方法,这里我是利用成绩数量来标记0-1在进行判断从而区分开必修和必修考试等的课程.
Score类:Score类也是成绩类,是我用来存储各种成绩的一个类,其作为成绩类不只是存储成绩,更应该算出学生的单科成绩.我还用了继承和多态的方法来区分不同的成绩存储.我Score类里面也有课程类,但是课程类主要用来存储课程信息的功能,从而达到计算学生成绩的方法.也就是来分权重.
grade类:grade类是班级类,班级定有班级号,我在里面创建了get班级号的方法,而这个方法我传进去的是number也就是学号,我利用substring(0.6)来截取出学号.同时我在里面也创建了int类型的grade_score也就是班级的成绩.这样子做的目的是到时候我只需遍历grade的list就可以实现输出.
Chosecourse类:Chosecourse类作为选课类是本次代码最为重要的部分.可以说其作为中枢的形式存在,为什么这样子说,因为选课本就和学生和课程和成绩都存在关系.这里我创建了3个list链表来存储信息,这里我发昏了,应该是hashmap类应该更为轻松,因为重复数据不会存储进去,但是list就不是都i要存进去,至于什么时候存进去什么时候不存进去就需要你自己来进行判断了.
这次代码加深了我对list包的理解和使用,比如List<类> list = new ArrayList<>();这里考的list的数字排序和汉字排序,就是用接口的办法来解决排序问题。这里接口:Comparable接口 接口中的方法为int compareTo(Shape);接口传入目标类来进行排序。而这次成绩统计系统更是考察对错误情况的检查,主要是对正则表达式的熟练应用来区分输入的错误和如何将他输出出来在哪里输出,这是我两个正则表达式:
String five="^(\\d{8})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([0-9]|[1-9][0-9]|100)\\s+([0-9]|[1-9][0-9]|100)$";String four="^(\\d{8})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([0-9]|[1-9][0-9]|100)$";真是越写越能感觉到正则表达式的好用,直接就可以干掉wrong format 这一个测试点.接下来是成绩系统-2:课程成绩统计程序-2在第一次的基础上增加了实验课,以下加粗字体显示为本次新增的内容。
某高校课程从性质上分为:必修课、选修课、实验课,从考核方式上分为:考试、考察、实验。
考试的总成绩由平时成绩、期末成绩分别乘以权重值得出,比如平时成绩权重0.3,期末成绩权重0.7,总成绩=平时成绩*0.3+期末成绩*0.7。
考察的总成绩直接等于期末成绩
实验的总成绩等于课程每次实验成绩的平均分
必修课的考核方式必须为考试,选修课可以选择考试、考察任一考核方式。实验课的成绩必须为实验。
1、输入:
包括课程、课程成绩两类信息。
课程信息包括:课程名称、课程性质、考核方式(可选,如果性质是必修课,考核方式可以没有)三个数据项。
课程信息格式:课程名称+英文空格+课程性质+英文空格+考核方式
课程性质输入项:必修、选修、实验
考核方式输入选项:考试、考察、实验
考试/考查课程成绩信息包括:学号、姓名、课程名称、平时成绩(可选)、期末成绩
考试/考查课程信息格式:学号+英文空格+姓名+英文空格+课程名称+英文空格+平时成绩+英文空格+期末成绩
实验课程成绩信息包括:学号、姓名、课程名称、实验次数、每次成绩
实验次数至少4次,不超过9次
实验课程信息格式:学号+英文空格+姓名+英文空格+课程名称+英文空格+实验次数+英文空格+第一次实验成绩+...+英文空格+最后一次实验成绩
以上信息的相关约束:
1)平时成绩和期末成绩的权重默认为0.3、0.7
2)成绩是整数,不包含小数部分,成绩的取值范围是【0,100】
3)学号由8位数字组成
4)姓名不超过10个字符
5)课程名称不超过10个字符
6)不特别输入班级信息,班级号是学号的前6位。
2、输出:
输出包含三个部分,包括学生所有课程总成绩的平均分、单门课程成绩平均分、单门课程总成绩平均分、班级所有课程总成绩平均分。
为避免误差,平均分的计算方法为累加所有符合条件的单个成绩,最后除以总数。
1)学生课程总成绩平均分按学号由低到高排序输出
格式:学号+英文空格+姓名+英文空格+总成绩平均分
如果某个学生没有任何成绩信息,输出:学号+英文空格+姓名+英文空格+"did not take any exams"
2)单门课程成绩平均分分为三个分值:平时成绩平均分(可选)、期末考试平均分、总成绩平均分,按课程名称的字符顺序输出
考试/考察课程成绩格式:课程名称+英文空格+平时成绩平均分+英文空格+期末考试平均分+英文空格+总成绩平均分
实验课成绩格式:课程名称+英文空格+总成绩平均分
如果某门课程没有任何成绩信息,输出:课程名称+英文空格+"has no grades yet"
3)班级所有课程总成绩平均分按班级由低到高排序输出
格式:班级号+英文空格+总成绩平均分
如果某个班级没有任何成绩信息,输出:班级名称+英文空格+ "has no grades yet"
异常情况:
1)如果解析某个成绩信息时,课程名称不在已输入的课程列表中,输出:学号+英文空格+姓名+英文空格+":"+课程名称+英文空格+"does not exist"
2)如果解析某个成绩信息时,输入的成绩数量和课程的考核方式不匹配,输出:学号+英文空格+姓名+英文空格+": access mode mismatch"
以上两种情况如果同时出现,按第一种情况输出结果。
3)如果解析某个课程信息时,输入的课程性质和课程的考核方式不匹配,输出:课程名称+" : course type & access mode mismatch"
4)格式错误以及其他信息异常如成绩超出范围等,均按格式错误处理,输出"wrong format"
5)若出现重复的课程/成绩信息,只保留第一个课程信息,忽略后面输入的。
信息约束:
1)成绩平均分只取整数部分,小数部分丢弃
import java.text.Collator;import java.util.ArrayList;import java.util.List;import java.util.Locale;import java.util.Scanner;import java.util.concurrent.atomic.AtomicInteger;import javax.xml.crypto.Data;import java.util.Collections;import java.util.Comparator;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int juddgeexist=0; int uu=0; Course cou__cou = new Course(null, null, null); Student stu__stu = new Student(null, null); grade gra_gra=new grade(null); Listmis=new ArrayList<>(); int qq=0; String five="^(\\d{8})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([0-9]|[1-9][0-9]|100)\\s+([0-9]|[1-9][0-9]|100)$"; String four="^(\\d{8})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([0-9]|[1-9][0-9]|100)$"; Chosecoure date = new Chosecoure(); int cont = 0; int sin=0; int run; while (in.hasNextLine()) { run=0; String a = in.nextLine().trim(); String[] b = a.split(" "); int length = b.length; int iq = 0; if (a.equals("end")) break; else { if (length == 2) { Course c = new Course(b[0], b[1]); if (c.课程性质和课程的考核方式匹配()) { for (Course e : date.course) { if (e.name.equals(b[0])) { iq = 1; break; } else { iq = 0; } } if (iq == 0) { date.course.add(c); } } else{ mis.add(c); } } if (length == 3) { Course c = new Course(b[0], b[1], b[2]); if (c.课程性质和课程的考核方式匹配()) { for (Course e : date.course) { if (e.name.equals(b[0])) { iq = 1; break; } else { iq = 0; } } if (iq == 0) { date.course.add(c); } } else{ mis.add(c); } } date.course.forEach((e)->{ e.decidemark(); }); for(Course e: date.course){ if(e.name.equals(b[2])) { run=e.mark; } } if ((length == 4 || length == 5)&&run!=3) { if (length == 4) { Score sco = new Score(b[0], b[1], b[2], -1, Integer.parseInt(b[3])); Student stu = new Student(b[0], b[1]); if (sco.存在这个课程(b[2], date.course) == true && sco.成绩数量匹配考核方式(b[2], date.course) == true && a.matches(four))//判断数据是否合法 { for(Course e: date.course){ if(e.name.equals(b[2])&&e.mark==1) sin=1; } if (cont == 0&&sin==1) { sco.dailyScore = 0; sco.decidecourse(date.course); date.score.add(sco); sco.dailyScore = -1; date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); cont++; } for (Score e : date.score) { if (e.number.equals(b[0]) && e.name.equals(b[1]) && e.course.name.equals(b[2]) && e.dailyScore == -1 && e.examScore == Integer.parseInt(b[3])&&sin==1) { break; } else { sco.dailyScore = 0; sco.decidecourse(date.course); date.score.add(sco);//将学生的成绩存入数据库成绩 // stu.student_score.add(sco);//存储数据将学生的成绩存到学生里面 date.student.add(stu);//存储数据将学生存入数据库 for (grade m : date.grades) { if (m.gradenumber.equals(gra_gra.getgradenumber(b[0]))) { juddgeexist = 1; break; } else { juddgeexist = 0; } } if (juddgeexist == 0) date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); break; } } } else if (!sco.存在这个课程(b[2], date.course) && !sco.成绩数量匹配考核方式(b[2], date.course)) { System.out.println(b[2] + " does not exist"); date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); } else if (!sco.存在这个课程(b[2], date.course)) { System.out.println(b[2] + " does not exist"); date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); } else if (!sco.成绩数量匹配考核方式(b[2], date.course)) { System.out.println(b[0] + " " + b[1] + " : access mode mismatch"); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); date.student.add(stu); } else if (!a.matches(four)) { System.out.println("wrong format"); } } if (length == 5) { uu=0; Score sco = new Score(b[0], b[1], b[2], Integer.parseInt(b[3]), Integer.parseInt(b[4])); Student stu = new Student(b[0], b[1]); for(Course e: date.course){ if(e.name.equals(b[2])&&e.mark==2) sin=2; } if (sco.存在这个课程(b[2], date.course) == true && sco.成绩数量匹配考核方式(b[2], date.course) == true && a.matches(five)&&sin==2)//判断数据是否合法 { if (cont == 0&&sin==2) { sco.decidecourse(date.course); date.score.add(sco); date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); cont++; } for (Score e : date.score) { if (e.number.equals(b[0]) && e.name.equals(b[1]) && e.course.name.equals(b[2]) && e.dailyScore == Integer.parseInt(b[3]) && e.examScore == Integer.parseInt(b[4])&&sin==2) { uu=1; } } if(uu==0&&sco.存在这个课程(b[2], date.course) == true && sco.成绩数量匹配考核方式(b[2], date.course) == true && a.matches(five)&&sin==2) { date.score.add(sco);//将学生的成绩存入数据库成绩 sco.decidecourse(date.course); // stu.student_score.add(sco);//存储数据将学生的成绩存到学生里面 date.student.add(stu);//存储数据将学生存入数据库 for (grade m : date.grades) { if (m.gradenumber.equals(gra_gra.getgradenumber(b[0]))) { juddgeexist = 1; break; } else { juddgeexist = 0; } } if (juddgeexist == 0) date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); } } else if (!sco.存在这个课程(b[2], date.course) && !sco.成绩数量匹配考核方式(b[2], date.course)) { System.out.println(b[2] + " does not exist"); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); date.student.add(stu); } else if (!sco.存在这个课程(b[2], date.course)) { date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); System.out.println(b[2] + " does not exist"); } else if (!sco.成绩数量匹配考核方式(b[2], date.course)) { date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); System.out.println(b[0] + " " + b[1] + " : access mode mismatch"); } else if (!a.matches(five)) { System.out.println("wrong format"); } } } if (length > 5||run==3) { Student stu = new Student(b[0], b[1]); Score sco = new Score(b[0], b[1], b[2], Integer.parseInt(b[3]), -1, -1, -1, -1, -1, -1, -1, -1, -1); if (length == 8) { sco = new Score(b[0], b[1], b[2], Integer.parseInt(b[3]), Integer.parseInt(b[4]), Integer.parseInt(b[5]), Integer.parseInt(b[6]), Integer.parseInt(b[7]), -1, -1, -1, -1, -1); } if (length == 9) { sco = new Score(b[0], b[1], b[2], Integer.parseInt(b[3]), Integer.parseInt(b[4]), Integer.parseInt(b[5]), Integer.parseInt(b[6]), Integer.parseInt(b[7]), Integer.parseInt(b[8]), -1, -1, -1, -1); } if (length == 10) { sco = new Score(b[0], b[1], b[2], Integer.parseInt(b[3]), Integer.parseInt(b[4]), Integer.parseInt(b[5]), Integer.parseInt(b[6]), Integer.parseInt(b[7]), Integer.parseInt(b[8]), Integer.parseInt(b[9]), -1, -1, -1); } if (length == 11) { sco = new Score(b[0], b[1], b[2], Integer.parseInt(b[3]), Integer.parseInt(b[4]), Integer.parseInt(b[5]), Integer.parseInt(b[6]), Integer.parseInt(b[7]), Integer.parseInt(b[8]), Integer.parseInt(b[9]), Integer.parseInt(b[10]), -1, -1); } if (length == 12) { sco = new Score(b[0], b[1], b[2], Integer.parseInt(b[3]), Integer.parseInt(b[4]), Integer.parseInt(b[5]), Integer.parseInt(b[6]), Integer.parseInt(b[7]), Integer.parseInt(b[8]), Integer.parseInt(b[9]), Integer.parseInt(b[10]), Integer.parseInt(b[11]), -1); } if (length == 13) { sco = new Score(b[0], b[1], b[2], Integer.parseInt(b[3]), Integer.parseInt(b[4]), Integer.parseInt(b[5]), Integer.parseInt(b[6]), Integer.parseInt(b[7]), Integer.parseInt(b[8]), Integer.parseInt(b[9]), Integer.parseInt(b[10]), Integer.parseInt(b[11]), Integer.parseInt(b[12])); } sco.getlength(length); for(Course e: date.course){ if(e.name.equals(b[2])&&e.mark==3) sin=3; } if (sco.存在这个课程(b[2], date.course) == true && sco.成绩数量匹配考核方式(b[2], date.course) == true&& sco.是否合法()&&sin==3) { sco.decidecourse(date.course); date.score.add(sco); date.student.add(stu); for (grade m : date.grades) { if (m.gradenumber.equals(gra_gra.getgradenumber(b[0]))) { juddgeexist = 1; break; } else { juddgeexist = 0; } } if (juddgeexist == 0) date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); cont++; } else if (!sco.存在这个课程(b[2], date.course) && !sco.成绩数量匹配考核方式(b[2], date.course)&& sco.是否合法()) { System.out.println(b[2] + " does not exist"); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); date.student.add(stu); } else if (!sco.存在这个课程(b[2], date.course)&& sco.是否合法()) { date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); System.out.println(b[2] + " does not exist"); } else if (!sco.成绩数量匹配考核方式(b[2], date.course)&&sco.是否合法()) { date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); System.out.println(b[0] + " " + b[1] + " : access mode mismatch"); } else if(!sco.是否合法()) { System.out.println("wrong format"); } } } }//开始进行数据的处理了 for (Student e : date.student) { e.getStudenttotol(date.score); } int flag = 0; int flag1=0; String num = "000"; Collections.sort(date.student); for (Student q : date.student) { flag = 0; if(!num.equals(q.number)) flag = 1; num = q.number; if(flag == 1) { if (q.JudgeEmpty()) System.out.println(q.number + " " + q.name + " " + q.student_score); else System.out.println(q.number+" "+q.name+" "+"did not take any exams"); } } date.Course_and_Score(); Collections.sort(date.grades); Collections.sort(date.course); date.output(); date.grade_score(date.score); String num1="000"; for(grade e : date.grades){ flag1=0; if(!num1.equals(e.gradenumber)) { flag1=1; num1=e.gradenumber; } if(flag1==1) { if(e.size!=0) System.out.println(e.gradenumber+" "+e.grade_score); } } }}class Course implements Comparable { String name; String nature; String assessment; int course_score=0; int course_dailyscore=0; int course_finalscore=0; int found=0; int mark=0; Course(String name,String nature,String assessment) { this.assessment=assessment; this.nature=nature; this.name=name; } Course(String name,String nature) { this.name=name; this.nature=nature; this.assessment="考试"; } boolean 课程性质和课程的考核方式匹配() { if((nature.equals("必修")&&assessment.equals("考察"))||(nature.equals("实验")&&assessment.equals("考试"))||(nature.equals("实验")&&assessment.equals("考察"))||(nature.equals("必修")&&assessment.equals("实验"))||(nature.equals("选修")&&assessment.equals("实验"))) { System.out.println(name+" : course type & access mode mismatch"); return false; } else return true; } @Override public int compareTo(Course o) { try { Comparator compator = Collator.getInstance(Locale.CHINA); if (compator.compare(this.name, o.name) < 0) { return -1; } else if (compator.compare(this.name, o.name) > 0) { return 1; } } catch (Exception e) { } return 0; } @Override public String toString() { return name; } // boolean 输入数据合法(String a){// if()// } void decidemark(){ if(nature.equals("必修")||assessment.equals("考试")) this.mark=2; if(assessment.equals("考察")) this.mark=1; if(assessment.equals("实验")&&nature.equals("实验")) this.mark=3; }}class Score{ String number; String name; Course course = new Course(null,null,null); int dailyScore; int examScore; int flag=-1; int chengji1=0; int chengji2=0; int chengji3=0; int chengji4=0; int chengji5=0; int chengji6=0; int chengji7=0; int chengji8=0; int chengji9=0; int size=0; int mark=0; int length; Score(String number, String name, String coursename, int dailyScore, int examScore) { this.number=number; this.dailyScore=dailyScore; this.examScore=examScore; this.course.name=coursename; this.name=name; if(dailyScore==-1) this.flag=0; else { this.flag=1; } } void getlength(int length){ this.length=length; } Score(String number, String name ,String coursename,int size,int chengji1,int chengji2,int chengji3,int chengji4,int chengji5,int chengji6,int chengji7,int chengji8,int chengji9) { this.number=number; this.dailyScore=dailyScore; this.examScore=examScore; this.course.name=coursename; this.name=name; this.chengji1=chengji1; this.chengji2=chengji2; this.chengji3=chengji3; this.chengji4=chengji4; this.chengji5=chengji5; this.chengji6=chengji6; this.chengji7=chengji7; this.chengji8=chengji8; this.chengji9=chengji9; this.size=size; int coo=9; if(chengji1==-1) { coo--; this.chengji1=0; } if(chengji2==-1) { coo--; this.chengji2=0; } if(chengji3==-1) { coo--; this.chengji3=0; } if(chengji4==-1) { coo--; this.chengji4=0; } if(chengji5==-1) { coo--; this.chengji5=0; } if(chengji6==-1) { coo--; this.chengji6=0; } if(chengji7==-1) { coo--; this.chengji7=0; } if(chengji8==-1) { coo--; this.chengji8=0; } if(chengji9==-1) { coo--; this.chengji9=0; } } void decidecourse(List course){ course.forEach((e)->{ if(e.name.equals(this.course.name)) { this.course=e; } }); } boolean 是否合法(){ if(size<4||size>9) return false; else if(chengji1<0||chengji1>100) return false; else if(chengji2<0||chengji2>100) return false; else if(chengji3<0||chengji3>100) return false; else if(chengji4<0||chengji4>100) return false; else if(chengji5<0||chengji5>100) return false; else if(chengji6<0||chengji6>100) return false; else if(chengji7<0||chengji7>100) return false; else if(chengji8<0||chengji8>100) return false; else if(chengji9<0||chengji9>100) return false; else return true; } int getFinalScore() { if(course.assessment.equals("考察")&&course.nature.equals("选修")) return examScore; else if(course.nature.equals("必修")&&!course.assessment.equals("实验")) { return (int)(examScore*0.7+dailyScore*0.3); } else if(course.assessment.equals("考试")&&course.nature.equals("选修")) { return (int)(examScore*0.7+dailyScore*0.3); } else if(course.assessment.equals("实验")&&course.nature.equals("实验")) return (int)((chengji1+chengji2+chengji3+chengji4+chengji5+chengji6+chengji7+chengji8+chengji9)/size); else return 0; } boolean 存在这个课程(String name,List course){ boolean a=false; for (Course e : course) { if (name.equals(e.name)) { a = true; return a; } } return a; } boolean 成绩数量匹配考核方式(String name,List course){ boolean b = true; for (Course e : course) { if(e.name.equals(name)) { if (((e.assessment.equals("考察") && flag == 1&&mark!=2) || (e.assessment.equals("考试") && flag == 0&&mark!=1) || (e.nature.equals("必修") && flag == 0&&mark!=1)||(e.nature.equals("实验")&&length-4!=size))) {// if (((e.assessment.equals("考察") && flag == 1) || (e.assessment.equals("考试") && flag == 0) || ((e.nature.equals("必修") && flag == 0)) && (!e.assessment.equals("考察") && !e.nature.equals("考试"))||size!=coo)) { b = false; break; } else { b = true; break; } } } return b; }}class Chosecoure { List score = new ArrayList<>(); List course = new ArrayList<>(); // Map mp_student = new TreeMap<>(new Comparator () {// @Override// public int compare(String o1, String o2) {// return o1.compareTo(o2);// }// }); List student = new ArrayList<>();// Collections.sort(student, new Comparator () {// @Override// public int compare(Student s1, Student s2) {// return s2.getAge() - s1.getAge();// }// }); List grades=new ArrayList<>(); grade lmlm=new grade(null); int m = 0; void Course_and_Score() { for (Course f : course) { m = 0; for (Score e : score) { if (e.course.name.equals(f.name)) { f.course_score += e.getFinalScore(); f.course_dailyscore += e.dailyScore; f.course_finalscore += e.examScore; m++; } } if (m != 0) { f.course_score = f.course_score / m;//计算总成绩 f.course_finalscore = f.course_finalscore / m;//计算期末成绩平均分 f.course_dailyscore = f.course_dailyscore / m;//计算平时成绩平均分 } else { System.out.println(f.name + " has no grades yet"); f.found=1; } } }//课程的成绩,也就是把各科目的成绩先统一计算出来 void grade_score(List e) { grades.forEach((q)->{ e.forEach((p)->{ if(q.gradenumber.equals(lmlm.getgradenumber(p.number))) { q.grade_score+=p.getFinalScore(); q.size++; } }); if(q.size != 0) q.grade_score/=q.size; if(q.size==0) System.out.println(q.gradenumber+" has no grades yet"); }); } void output() { course.forEach((e) -> { { if ((e.assessment.equals("考试") || e.nature.equals("必修"))&&e.found==0) System.out.println(e.name + " " + e.course_dailyscore + " " + e.course_finalscore + " " + e.course_score); if (e.assessment.equals("考察")&&e.found==0) { System.out.println(e.name + " " + e.course_finalscore + " " + e.course_finalscore); } if(e.assessment.equals("实验")&&e.nature.equals("实验")&&e.found==0) { System.out.println(e.name+ " " + e.course_score); } } }); }}class Student implements Comparable { String number; String name; int student_score = 0; int student_score_size=0; Student(String number,String name) { this.number=number; this.name=name; } boolean JudgeEmpty(){ if(student_score_size==0) { return false; } else { return true; } } int getStudenttotol(List e){ e.forEach((f)->{ if(f.name.equals(name)&&f.number.equals(number)) { student_score+=f.getFinalScore(); student_score_size++; } }); if(student_score_size != 0) student_score=student_score/student_score_size; return student_score; } @Override public int compareTo(Student o) { //比较条件我们定的是按照age升序// int s = this.age - o.age; return this.number.compareTo(o.number); } @Override public String toString() { return number; }}class grade implements Comparable { String gradenumber; grade(String gradenumber){ this.gradenumber=gradenumber; } int grade_score = 0; int size=0; String getgradenumber(String number){ this.gradenumber=number.substring(0,6); return gradenumber; } @Override public int compareTo(grade o) { //比较条件我们定的是按照age升序// int s = this.age - o.age; return this.gradenumber.compareTo(o.gradenumber); } @Override public String toString() { return gradenumber; }}
这里我用了很笨的办法,即利用chengji1-9来记录实验的成绩,如果没有则成绩设为0;并且利用size来确定成绩i的个数
这里用的最多的还是继承和多态.尤其是course类,同时我也利用了大量的方法在类里面,利用数据的传输来达到我想要的目的,比如获得学生成绩,获得班级成绩,判断实验数据是否合法
以下是我的派坑顺序
首先是这个,我当时就发懵了,为什么回过不去,我发现12-14-15的测试点为什么会过不去呢.我就一直测试一直找测试点,我还和我身边满分的同学一直对比测试点,发现一直是一样的,就打算放弃的时候,打游戏的时候突然灵感来了.猛干代码找到了测试点,原来是错误信息的输入,比如含有重名的班级我存储了两次,这里很明显就对比出了list的弊端和hashmap的优势,但是已经写到这里了,在改也来不及了,就在主函数里加了好多判断的语句最后过了.
还有就是这个点卡了我一整天测试点2我当时就发懵了,为什么我能拿到大部分的分44.但是2却过不了,我还是同样的操作找测试点,发现是有一种及其挑剔的情况没有考虑到,最后通过调试的方法才找到了这个测试点.
总结这次代码:
在上次代码基础上改正总耗时3天:
它使用了面向对象的编程思想,将课程,成绩,学生和班级封装成类,方便管理和操作。它使用了集合类,如List,ArrayList等,来存储和处理数据以及排序,提高了效率和灵活性。它使用了异常处理,我用了在类里定义方法的方法(不会try-catch很难过),来捕获和处理可能出现的错误,增强了程序的健壮性。
成绩统计系统-3:
课程成绩统计程序-3在第二次的基础上修改了计算总成绩的方式,
要求:修改类结构,将成绩类的继承关系改为组合关系,成绩信息由课程成绩类和分项成绩类组成,课程成绩类组合分项成绩类,分项成绩类由成绩分值和权重两个属性构成。
完成课程成绩统计程序-2、3两次程序后,比较继承和组合关系的区别。思考一下哪一种关系运用上更灵活,更能够适应变更。
题目最后的参考类图未做修改,大家根据要求自行调整,以下内容加粗字体显示的内容为本次新增的内容。
某高校课程从性质上分为:必修课、选修课、实验课,从考核方式上分为:考试、考察、实验。
考试的总成绩由平时成绩、期末成绩分别乘以权重值得出,比如平时成绩权重0.3,期末成绩权重0.7,总成绩=平时成绩*0.3+期末成绩*0.7。
考察的总成绩直接等于期末成绩
实验的总成绩等于课程每次实验成绩乘以权重后累加而得。
课程权重值在录入课程信息时输入。(注意:所有分项成绩的权重之和应当等于1)
必修课的考核方式必须为考试,选修课可以选择考试、考察任一考核方式。实验课的成绩必须为实验。
1、输入:
包括课程、课程成绩两类信息。
课程信息包括:课程名称、课程性质、考核方式、分项成绩数量、每个分项成绩的权重。
考试课信息格式:课程名称+英文空格+课程性质+英文空格+考核方式+英文空格+平时成绩的权重+英文空格+期末成绩的权重
考察课信息格式:课程名称+英文空格+课程性质+英文空格+考核方式
实验课程信息格式:课程名称+英文空格+课程性质+英文空格+考核方式+英文空格+分项成绩数量n+英文空格+分项成绩1的权重+英文空格+。。。+英文空格+分项成绩n的权重
实验次数至少4次,不超过9次
课程性质输入项:必修、选修、实验
考核方式输入选项:考试、考察、实验
考试/考查课程成绩信息包括:学号、姓名、课程名称、平时成绩(可选)、期末成绩
考试/考查课程成绩信息格式:学号+英文空格+姓名+英文空格+课程名称+英文空格+平时成绩+英文空格+期末成绩
实验课程成绩信息包括:学号、姓名、课程名称、每次成绩{在系列-2的基础上去掉了(实验次数),实验次数要和实验课程信息中输入的分项成绩数量保持一致}
实验课程信息格式:学号+英文空格+姓名+英文空格+课程名称+英文空格+第一次实验成绩+...+英文空格+最后一次实验成绩
以上信息的相关约束:
1)成绩是整数,不包含小数部分,成绩的取值范围是【0,100】
2)学号由8位数字组成
3)姓名不超过10个字符
4)课程名称不超过10个字符
5)不特别输入班级信息,班级号是学号的前6位。
2、输出:
输出包含三个部分,包括学生所有课程总成绩的平均分、单门课程总成绩平均分、班级所有课程总成绩平均分。
为避免四舍五入误差,
计算单个成绩时,分项成绩乘以权重后要保留小数位,计算总成绩时,累加所有分项成绩的权重分以后,再去掉小数位。
学生总成绩/整个班/课程平均分的计算方法为累加所有符合条件的单个成绩,最后除以总数。
1)学生课程总成绩平均分按学号由低到高排序输出
格式:学号+英文空格+姓名+英文空格+总成绩平均分
如果某个学生没有任何成绩信息,输出:学号+英文空格+姓名+英文空格+"did not take any exams"
2)单门课程成绩按课程名称的字符顺序输出
课程成绩输出格式:课程名称+英文空格+总成绩平均分
如果某门课程没有任何成绩信息,输出:课程名称+英文空格+"has no grades yet"
3)班级所有课程总成绩平均分按班级由低到高排序输出
格式:班级号+英文空格+总成绩平均分
如果某个班级没有任何成绩信息,输出:班级名称+英文空格+ "has no grades yet"
异常情况:
1)如果解析某个成绩信息时,课程名称不在已输入的课程列表中,输出:学号+英文空格+姓名+英文空格+":"+课程名称+英文空格+"does not exist"
2)如果解析某个成绩信息时,输入的成绩数量和课程的考核方式不匹配,输出:学号+英文空格+姓名+英文空格+": access mode mismatch"
以上两种情况如果同时出现,按第一种情况输出结果。
3)如果解析某个课程信息时,输入的课程性质和课程的考核方式不匹配,输出:课程名称+" : course type & access mode mismatch"
4)格式错误以及其他信息异常如成绩超出范围等,均按格式错误处理,输出"wrong format"
5)若出现重复的课程/成绩信息,只保留第一个课程信息,忽略后面输入的。
6)如果解析实验课程信息时,输入的分项成绩数量值和分项成绩权重的个数不匹配,输出:课程名称+" : number of scores does not match"
7)如果解析考试课、实验课时,分项成绩权重值的总和不等于1,输出:课程名称+" : weight value error"
信息约束:
1)成绩平均分只取整数部分,小数部分丢弃
import java.text.Collator;import java.util.ArrayList;import java.util.List;import java.util.Locale;import java.util.Scanner;import java.util.Collections;import java.util.Comparator;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int juddgeexist=0; int uu; int ss=0; grade gra_gra=new grade(null); String five="^(\\d{8})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([0-9]|[1-9][0-9]|100)\\s+([0-9]|[1-9][0-9]|100)$"; String four="^(\\d{8})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([\\u4e00-\\u9fa5a-zA-Z0-9_]{1,10})\\s+([0-9]|[1-9][0-9]|100)$"; Chosecoure date = new Chosecoure(); int cont = 0; int sin=0; int run; int ie=0; while (in.hasNextLine()) { run=0; String a = in.nextLine().trim(); String[] b = a.split(" "); int length = b.length; ss=0; int iq = 0; if (a.equals("end")) break; else { if (length == 3&&(b[1].equals("必修")||b[1].equals("选修")||b[1].equals("实验"))) { ie=1; int su=0; float []fll = new float[2]; fll[0]=1; Course c = new Course(b[0],b[1],b[2],1,fll); if (c.课程性质和课程的考核方式匹配(su)) { if(c.权重之和是否为1()){ for (Course e : date.course) { if (e.name.equals(b[0])) { iq = 1; break; } else iq = 0; } if (iq == 0) date.course.add(c); } else{ System.out.println(b[0] + " : weight value error"); } } else { System.out.println(b[0]+" : course type & access mode mismatch"); } } else if ((length == 6||length==5)&&(b[1].equals("必修")||b[1].equals("选修")||b[1].equals("实验"))) { ie=1; int su=0; float []fll = new float[2]; Course c = new Course(b[0], b[1], b[2],2,fll); if(length==6){ fll[0]=Float.parseFloat(b[4]); fll[1]=Float.parseFloat(b[5]); c = new Course(b[0], b[1], b[2],2,fll); } if(length==5) { fll[0]=Float.parseFloat(b[3]);; fll[1]=Float.parseFloat(b[4]); c = new Course(b[0], b[1],"no",2,fll); } if (c.课程性质和课程的考核方式匹配(su)) { if(c.权重之和是否为1()){ for (Course e : date.course) { if (e.name.equals(b[0])) { iq = 1; break; } else iq = 0; } if (iq == 0) date.course.add(c); } else{ System.out.println(b[0] + " : weight value error"); } } else { System.out.println(b[0]+" : course type & access mode mismatch"); } } else if(length>6&&(b[2].equals("实验")||b[2].equals("考察")||b[2].equals("考试"))) { int su=1; float[] fll = new float[length - 4]; for (int i = 0; i < length - 4; i++) { fll[i] = Float.parseFloat(b[i+4]); } Course c = new Course(b[0], b[1], b[2], Integer.parseInt(b[3]), fll); if (c.合法()) { if (c.课程性质和课程的考核方式匹配(su)) if(length - 4 == Integer.parseInt(b[3])){ if (c.权重之和是否为1()) { for (Course e : date.course) { if (e.name.equals(b[0])) { iq = 1; break; } else iq = 0; } if (iq == 0) date.course.add(c); } else{ System.out.println(b[0] + " : weight value error"); } } else if(!c.课程性质和课程的考核方式匹配(su)){ System.out.println(b[0]+" : course type & access mode mismatch"); } else { System.out.println(b[0]+" : number of scores does not match"); } } else{ System.out.println("wrong format"); } } date.course.forEach((e)->{ e.decidemark(); }); for(Course e: date.course){ if(e.name.equals(b[2])) run=e.mark; } if ((length == 4 || length == 5)&&run!=3&&ie!=1) { if (length == 4) { if (!a.matches(four)) { System.out.println("wrong format"); }else{ int []fll = new int[9]; fll[0]=-1; fll[1]=Integer.parseInt(b[3]); Score sco = new Score(b[0], b[1],b[2],fll); Student stu = new Student(b[0], b[1]); date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); for(Course e: date.course) { if (e.name.equals(b[2]) && e.mark == 1) sin = 1; if(e.name.equals(b[2])) { sco.getweight(e.weight); sco.getsize(e.size); } } if (sco.存在这个课程(b[2], date.course) && sco.成绩数量匹配考核方式(b[2], date.course)) { //if (cont == 0&&sin==1) { // sco.dailyScore = 0; // sco.decidecourse(date.course); // date.score.add(sco); // sco.dailyScore = -1; // cont++; //} for (Score e : date.score) { if (e.number.equals(b[0]) && e.name.equals(b[1]) && e.course.name.equals(b[2]) && e.dailyScore == -1 && e.examScore == Integer.parseInt(b[3])&&sin==1) break; else { sco.dailyScore = 0; sco.decidecourse(date.course); date.score.add(sco); for (grade m : date.grades) { if (m.gradenumber.equals(gra_gra.getgradenumber(b[0]))) { juddgeexist = 1; break; } else juddgeexist = 0; } if (juddgeexist == 0) date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); break; } } } else if (!sco.存在这个课程(b[2], date.course) && !sco.成绩数量匹配考核方式(b[2], date.course)) System.out.println(b[2] + " does not exist"); else if (!sco.存在这个课程(b[2], date.course)) System.out.println(b[2] + " does not exist"); else if (!sco.成绩数量匹配考核方式(b[2], date.course)) System.out.println(b[0] + " " + b[1] + " : access mode mismatch"); } } if (length == 5) { if (!a.matches(five)) { System.out.println("wrong format"); } else{ uu=0; int []fll=new int [9]; fll[0]= Integer.parseInt(b[3]); fll[1]= Integer.parseInt(b[4]); Score sco = new Score(b[0],b[1],b[2],fll); Student stu = new Student(b[0], b[1]); date.student.add(stu); date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); for(Course e: date.course){ if(e.name.equals(b[2])&&e.mark==2) sin=2; if(e.name.equals(b[2])) { sco.getweight(e.weight); sco.getsize(e.size); } } if (sco.存在这个课程(b[2], date.course) && sco.成绩数量匹配考核方式(b[2], date.course) && a.matches(five)&&sin==2)//判断数据是否合法 { // if (cont == 0&&sin==2) { // sco.decidecourse(date.course); // date.score.add(sco); // cont++; // } for (Score e : date.score) { if (e.number.equals(b[0]) && e.name.equals(b[1]) && e.course.name.equals(b[2]) && e.dailyScore == Integer.parseInt(b[3]) && e.examScore == Integer.parseInt(b[4])&&sin==2) { uu=1; } } if(uu==0&& sco.存在这个课程(b[2], date.course) && sco.成绩数量匹配考核方式(b[2], date.course) && a.matches(five)&&sin==2) { sco.decidecourse(date.course); date.score.add(sco); for (grade m : date.grades) { if (m.gradenumber.equals(gra_gra.getgradenumber(b[0]))) { juddgeexist = 1; break; } else { juddgeexist = 0; } } if (juddgeexist == 0) date.grades.add(new grade(gra_gra.getgradenumber(b[0]))); } } else if (!sco.存在这个课程(b[2], date.course) && !sco.成绩数量匹配考核方式(b[2], date.course)) { System.out.println(b[2] + " does not exist"); } else if (!sco.存在这个课程(b[2], date.course)) { System.out.println(b[2] + " does not exist"); } else if (!sco.成绩数量匹配考核方式(b[2], date.course)) { System.out.println(b[0] + " " + b[1] + " : access mode mismatch"); } } } } if ((length > 5||run==3)&&!b[2].equals("实验")&&!b[2].equals("考察")&&!b[2].equals("考试")&&ie!=1) { int []fll = new int[9]; for(int i=0;i<9;i++) fll[i]=-1; for(int i=0;i{ String name; String nature; String assessment="no"; int size=0; int course_score=0; int course_dailyscore=0; int course_finalscore=0; float []weight=new float[9]; int found=0; int mark=0; float sum=0; Course(String name,String nature,String assessment,int size,float fll[]) { this.assessment=assessment; this.nature=nature; this.name=name; this.size=size; this.weight=fll; } boolean 课程性质和课程的考核方式匹配(int su) { if((nature.equals("必修")&&assessment.equals("考试")&&su==0)||(nature.equals("必修")&&assessment.equals("no")&&su==0)||(nature.equals("实验")&&assessment.equals("实验")&&su==1)||(nature.equals("必修")&&assessment.equals(null)&&su==0)||(nature.equals("选修")&&assessment.equals("考试")&&su==0)||(nature.equals("选修")&&assessment.equals("考察")&&su==0)) { return true; } else return false; } public int compareTo(Course o) { try { Comparator compator = Collator.getInstance(Locale.CHINA); if (compator.compare(this.name, o.name) < 0) { return -1; } else if (compator.compare(this.name, o.name) > 0) { return 1; } } catch (Exception e) { } return 0; } @Override public String toString() { return name; } void decidemark(){ if(nature.equals("必修")||assessment.equals("考试")) this.mark=2; if(assessment.equals("考察")) this.mark=1; if(assessment.equals("实验")&&nature.equals("实验")) this.mark=3; } boolean 权重之和是否为1(){ for(int i=0;i 9) return false; else return true; }}class Score{ String number; String name; Course course = new Course(null,null,"no",0,null); int dailyScore; int examScore; int flag=-1; int[] chengji=new int[9]; float [] weight=new float[9]; int size=0; int mark=0; int length; void getsize(int size){ this.size=size; } void getweight(float weight[]){ this.weight=weight; } void getlength(int length){ this.length=length; } Score(String number, String name ,String coursename,int chengji[]) { this.number=number; this.course.name=coursename; this.name=name; this.chengji=chengji; for(int i=0;i<9;i++) { if(chengji[i]==-1) this.chengji[i]=0; } } void decidecourse(List course){ course.forEach((e)->{ if(e.name.equals(this.course.name)) { this.course=e; } }); } boolean 是否合法(){ if(size<4||size>9) return false; for(int i=0;i<9;i++) { if(chengji[i]<0||chengji[i]>100) return false; } return true; } int getFinalScore() { float sum=0; if(course.assessment.equals("考察")&&course.nature.equals("选修")) return chengji[1]; else if(course.nature.equals("必修")&&!course.assessment.equals("实验")) { return (int)(chengji[0]*weight[0]+chengji[1]*weight[1]); } else if(course.assessment.equals("考试")&&course.nature.equals("选修")) { return (int)(chengji[0]*weight[0]+chengji[1]*weight[1]); } else if(course.assessment.equals("实验") && course.nature.equals("实验")){ for(int q=0;q course){ boolean a=false; for (Course e : course) { if (name.equals(e.name)) { a = true; return a; } } return a; } boolean 成绩数量匹配考核方式(String name,List course){ boolean b = true; for (Course e : course) { if(e.name.equals(name)) { b = (!e.assessment.equals("考察") || flag != 1 || mark == 2) && (!e.assessment.equals("考试") || flag != 0 || mark == 1) && (!e.nature.equals("必修") || flag != 0 || mark == 1) && (!e.nature.equals("实验") || length - 3 == size); break; } } return b; }}class Chosecoure { List score = new ArrayList<>(); List course = new ArrayList<>(); List student = new ArrayList<>(); List grades=new ArrayList<>(); grade lmlm=new grade(null); int m = 0; void Course_and_Score() { for (Course f : course) { m = 0; for (Score e : score) { if (e.course.name.equals(f.name)) { f.course_score += e.getFinalScore(); f.course_dailyscore += e.chengji[0]; f.course_finalscore += e.chengji[1]; m++; } } if (m != 0) { f.course_score = f.course_score / m; f.course_finalscore = f.course_finalscore / m; f.course_dailyscore = f.course_dailyscore / m; } else { System.out.println(f.name + " has no grades yet"); f.found=1; } } } void grade_score(List e) { grades.forEach((q)->{ e.forEach((p)->{ if(q.gradenumber.equals(lmlm.getgradenumber(p.number))) { q.grade_score+=p.getFinalScore(); q.size++; } }); if(q.size != 0) q.grade_score/=q.size; }); } void output() { course.forEach((e) -> { { if ((e.assessment.equals("考试") || e.nature.equals("必修"))&&e.found==0) System.out.println(e.name + " "+ e.course_score); if (e.assessment.equals("考察")&&e.found==0) { System.out.println(e.name +" " + e.course_finalscore); } if(e.assessment.equals("实验")&&e.nature.equals("实验")&&e.found==0) { System.out.println(e.name+ " " + e.course_score); } } }); }}class Student implements Comparable { String number; String name; float student_score = 0; int student_score_size=0; Student(String number,String name) { this.number=number; this.name=name; } boolean JudgeEmpty(){ return student_score_size != 0; } int getStudenttotol(List e){ e.forEach((f)->{ if(f.number.equals(number)) { student_score+=f.getFinalScore(); student_score_size++; } }); if(student_score_size != 0) student_score=student_score/student_score_size; return (int)student_score; } public int compareTo(Student o) { return this.number.compareTo(o.number); } public String toString() { return number; }}class grade implements Comparable { String gradenumber; grade(String gradenumber){ this.gradenumber=gradenumber; } int grade_score = 0; int size=0; String getgradenumber(String number){ this.gradenumber=number.substring(0,6); return gradenumber; } public int compareTo(grade o) { return this.gradenumber.compareTo(o.gradenumber); } public String toString() { return gradenumber; }}
让我没想到的是这一次老师竟然设置了内存限制,导致我代码超出限度,无法提交,我只好先花一天的时间对我之前的代码进行修改,删减,削减注释,才交上去.哭.jpg........
这一次相对上一次则加了权重,这意味着考试这个权重得进行修改还有实验也得进行修改.
以下是我大改的代码:
void Course_and_Score() { for (Course f : course) { m = 0; for (Score e : score) { if (e.course.name.equals(f.name)) { f.course_score += e.getFinalScore(); f.course_dailyscore += e.chengji[0]; f.course_finalscore += e.chengji[1]; m++; } } if (m != 0) { f.course_score = f.course_score / m; f.course_finalscore = f.course_finalscore / m; f.course_dailyscore = f.course_dailyscore / m; } else { System.out.println(f.name + " has no grades yet"); f.found=1; } } }int getFinalScore(){float sum=0;if(course.assessment.equals("考察")&&course.nature.equals("选修"))return chengji[1];else if(course.nature.equals("必修")&&!course.assessment.equals("实验")){return (int)(chengji[0]*weight[0]+chengji[1]*weight[1]);}else if(course.assessment.equals("考试")&&course.nature.equals("选修")){return (int)(chengji[0]*weight[0]+chengji[1]*weight[1]);}else if(course.assessment.equals("实验") && course.nature.equals("实验")){for(int q=0;q9)return false;for(int i=0;i<9;i++){if(chengji[i]<0||chengji[i]>100)return false;}return true;}boolean 权重之和是否为1(){for(int i=0;i 因为课程的存储方式改变了不仅仅需要改成绩类,还要改课程类,相对于第二次可谓是大改了.难度确实比第一次到第二次难
这里最坑的一个点是这个
这里考的点竟然是数据的精度计算我真的就没想到,你敢信0.2+0.3+0.4+0.1!=1???????
实际上确实不等于1.这里只能进行精度计算
真的是给我整吐了,找这两个测试点.
这个点能过我找到的测试点是比如
java实验实验40.20.30.20.3c语言必修考试20.40.6ma实验实验40.20.30.20.20.120201116张三java7080901008022060002流啊c语言809030615250阿斯顿ma10090808070end
这个无疑是对代码进行最大的检查,基本包括了所有的情况.包括了异常情况.
然后是到满分的突破
java必修20.60.4jaca必修考试20.60.4jump实验实验40.20.30.20.3acp选修考察mup选修考试20.60.422206117刘何java10010022206017刘俊何jaca10010030202050lljump85951006514561565ppacp10045648994oomup9595end
你敢信java必修20.60.4和java必修 考试 20.60.4是一样的,这无疑在课程上又是一大难关.经过调试和改正最后也是过了,我主要用的是在判断上下了狠功夫.
最后总结一下:
一个困难是写出来的程序总是编译不过去,有时候会出一些很奇怪的报错,找不到原因在哪,我用了IDEA,但有时候就是找不到出错原因在哪可能有结构上的问题,另外一个困难是有时候不知道该怎么实现题目要求的功能,不知道怎么办,题目要求的功能用代码实现出来,并与以前的代码相契合,我经常会加了某一个功能之后就代码运行不了,要么是编译错误,要么是逻辑错误。好在现在我已经优化了一些地方,弥补了一些遗憾,正如上面展示的代码和分析一样。
在日常编码中,充分利用Java自带的函数库可以使我们更加高效地解决一些问题,避免不必要的麻烦,并且让我们的代码更具优雅性。因此,我们需要注重学习Java标准库中提供的各种方法和类,这些方法和类通常都有详细的文档说明,对于快速解决实际应用问题非常有帮助。最终,我们应该力求让自己的代码既能表达自己的意图,又能为其他人所理解,这也是一个好的编程习惯,就比如list和hashmap的对比,
我觉得产生以上问题的主要原因应该是我对应用JAVA编程不够熟练,各种语法不能够全面的了解,熟练的运用。
为使我们的代码更加易读易维护,我们需要在对类名、对象名的取名以及注释中注重见名知义的原则。这一点会变得更加明显,尤其是当我们写了很长的代码后,回忆前面写的内容也会变得困难。Java语言提供了许多文档和类库,通过熟练掌握这些文档和库函数,既可以减少不必要的工作量,又可以提高代码效率和质量,让我们的代码更加整洁易懂。
还要代码非常需要封装性,包装起来,如果能做到主函数仅仅几行,我觉得这就是代码面向对象的最高境界了............................
最重要的是其实如果记不过来英文名字用中文也可以.....
最后各位大哥大姐高抬贵手
关键词:
每日看点!BLOG-3----22206117
环球热点评!留给“牛粉”的时间不多了!兰博基尼宣布:Urus将于五年内变为纯电车型
25万美元一趟值吗?致5死泰坦号潜艇内部曝光:没凳子只能盘腿坐 马桶是最佳座位
云南上线购车送油券活动:每车2500元 可在中石油、中石化消费
缅北电诈愈演愈烈,人口贩卖已成全球性危机 焦点快播
强化学习从基础到进阶-案例与实践[3]:表格型方法:Sarsa、Qlearning;蒙特卡洛策略、时序差分等以及Qlearning项目实战
ChatGPT和AI会重燃中国的虚拟宇宙吗?-世界聚焦
产业强市|安能智慧物流产业联盟暨苏皖区域总部即将落户句容 焦点快报
山东已出现43℃以上高温 多地异常高温到底是什么原因?专家揭秘
上海高考分数线公布 :本科405分 官方:不会对成绩进行排名
【全球新视野】配置你的 Linux 的 GRUB 启动背景
rust 集合、错误处理、泛型、Trait、生命周期、包 全球新动态
MosaicML 推出 30B 模型 — 挑战 LLaMA、Falcon 和 GPT-全球今日报
天天即时看!mongodb 深度分页优化思路之cursor游标
记录liunx服务器和docker时区修改-天天热头条
汉语为桥 粽情西岸 当前热点
天天观点:究竟是驼背还是翘臀?全新奔驰GLC轿跑SUV插电混动版来了
马斯克和扎克伯格约架 马斯克母亲:确认取消了|世界视点
热文:https://editor.csdn.net/md/?articleId=131348876
迪凡车业为旗下跃歌品牌保驾护航
理想L系列经常充到100%伤车吗? 李想:不会 放心用 电池寿命大于车|焦点快看
世界播报:浙江一男子躲雨后将屋主晒的菜踢到雨中 三观尽毁:网友称坏到骨子里
景区网红大雁被游客踢中要害离世 吓着孩子:网友愤怒 应重罚 世界动态
全球短讯!Win11最近一个月卡爆了!CPU占用高元凶终于找到:微软认错
内江第十一届大千龙舟文化节市中区端午民俗活动举行|独家
【世界独家】詹姆斯·卡梅隆谈泰坦号观光艇内爆导致5名乘员死亡:和泰坦尼克号沉没惊人相似 灾难再一次重演
微软誓要收购动视暴雪 索尼急了!PS6主机将封杀之|环球今日讯
前沿资讯!南孚旗下 益圆5号/7号碳性电池冲量:0.48元/节
车主自曝差点被闷死在特斯拉里:车辆完全死机 车门锁死_每日速讯
辽宁:2023年高考成绩24日16时发布|当前视点
iOS 微信、支付宝、银联支付组件的进一步设计-天天播资讯
当前滚动:理查森的大型CityLine办公楼开发项目上市
【天天新要闻】50斤重鳄雀鳝藏匿水库一年偷鱼吃 为何不负责放生屡禁不止?律师、专家释疑
女子称41℃高温把盆里的衣服晒冒烟了!多地今日最高温40度:热热热
马斯克和扎克伯格约架 马斯克母亲发话:打打嘴仗算了|全球快资讯
世界速读:1. Spring相关概念
巡演拯救经济?外媒称霉霉巡演可能为美国带来46亿美元收入
土耳其央行2年来首次加息 焦点消息
真八角笼中决斗!马斯克发战书 扎克伯格接受了:科技大佬约架 都认真对待
端午假期遇上高考查分 各地高考成绩今天起陆续公布:各省成绩查询时间一览
天天快消息!张绍刚你好狠的心 剧中亲儿子都舍得杀!《长风渡》热度破万 你追了吗
地表最强三缸机!丰田全新GR卡罗拉赛道版限量发布:三缸榨出300匹马力
前端Vue自定义导航栏菜单 定制左侧导航菜单按钮 中部logo图标 右侧导航菜单按钮
夏日健康帖丨出现这几个症状别大意!你可能已经中暑|每日热文
苹果尴尬!iOS系统比安卓难上手实锤了:易用性相差58% 环球讯息
正式牵手!苏州和上海地铁连起来了:无感换乘 比坐高铁方便多了-每日观点
端午“龙舟”天花板!广西桂林遇龙河现“巨龙巡游”:无比壮观
每日报道:国产操作系统赶超Win 10:插上U盘就能用
泰坦号壳体破裂沉没 乘员无一生还 世界热点评
创两月以来最大跌幅!特斯拉市值一夜蒸发3400亿元
被特斯拉坑了 半幅方向盘车型暂停上牌?多方回应 天天观点
读发布!设计与部署稳定的分布式系统(第2版)笔记09_一窝蜂和容量 全球最资讯
满汉全席所有菜谱(求满汉全席食谱 谁有)|天天最资讯
环球快看:凤凰古城端午热:众人跳水抓鸭 场面火爆!
megacli_sw服务器Raid卡的设置过程 环球快播
高温下北京白天现星星:肉眼可见金星、月亮同框|焦点短讯
视讯!Epic喜加二:《猎人:野性的呼唤》《遗忘国度之闲置冠军》免费
《最终幻想16》等级上限解答:新游戏+解锁100级-世界观速讯
爱奇艺王晓晖:影视不是一门好生意,却可以是伟大的生意
风靡至今什么意思(风靡一时是什么意思)
清远职业技术学校是大专还是中专_清远职业技术学校
焦点热议:使用近10年,说说向大家推荐Linux系统的理由
【世界速看料】吃下肚的粽子是用什么叶子包的?知道真相的人太少了!
中央气象台发布今年首个高温橙色预警:17站点最高气温破历史极值!
随着快船错过布罗格登,这件事情彻底暴露了3个可笑的事实
人人可用的开源数据可视化分析工具 焦点快报
文心一言 VS 讯飞星火 VS chatgpt (44)-- 算法导论6.1 1题_每日热议
天天讯息:周润发《别叫我“赌神”》豆瓣短评出炉:烂片没的说!
奇葩操作 男子让狗舔舐伤口消毒 医生:狗唾液细菌很多
【全球热闻】中央气象台发布今年首个高温橙色预警 17站点最高气温破历史极值
天天新消息丨关于高考一分一档数据分布的研究
每日简讯:《英雄联盟》夏季赛EDG 0:2不敌RNG:Uzi面对老东家无力回天
内蒙古乌兰浩特:民族团结庆端午
介绍CocosCreator系统事件是怎么产生及触发的
ChatGPT 会取代程序员吗?揭穿神话 世界观天下
7999元起 国人买iPhone 14 Pro需9.5%年收入引热议:你多久才能买?
外星人在美一户人家后院活动?别信:3D建模软件做的_当前资讯
寻找新的 AI 应用程序和 ChatGPT 工具的前 5 个网站
部署zabbix5_每日资讯
北京通州一业主私家车长期占用消防车通道且拒不整改 遭行政拘留7日
科学家付巧妹获得联合国首位阿勒福赞奖 从进化角度为人类健康问题带来新见解
郑州将于6月份发放5000万元汽车消费券 不限购买者户籍
著名球星贝克汉姆使用中文为中国粉丝献上端午祝福 网友热情回应
微软宣布Xbox Series X和XGP订阅服务将涨价 称其反应市场的竞争情况
美国亿万富翁家庭以91万元年薪招聘住家狗保姆 将狗的幸福放在首位
顺丰旗下大型无人机FH-98顺利降落 最大起飞重量5.25吨
余承东曾预告!中国自动驾驶迎来大进展:官方首次表态L3商用
天天微资讯!《英雄联盟》新英雄纳亚菲利玩法公布 这是真的狗!
为减少内卷 四家头部猪企发起“互不挖人公约”
贵州贵阳周边现奇幻红色湖泊 吸引众多游客前往打卡
第28届白玉兰奖评委见面会举行 《庆余年》导演称应杜绝文盲演员
吉林一市民驾车偶遇“拦路虎” 强调路边遇到老虎不要开车窗或下车
《超级马里奥兄弟 惊奇》公布 预计于本年10月20日发售
我国最长的深水油气管道完工 区域最大作业水深近1000米
辽宁铁岭一位母亲带着高考结束的女儿去整容 当事人提醒勿盲目去跟风
北京宣布对电动自行车进行管理 因含有尖锐的金属杆导致安全系数高
视讯!中国乡村“现象级”体育赛事频现
曾排名国内服装品牌第一:拉夏贝尔正式破产清算 世界快讯
世界今日讯!Java基础复习笔记详细版
xxx.opt-1.pyc、xxx.opt-2.pyc和xxx.pyc的区别-热点在线