前言
前三次Java题目集较为简单,是java当中的基础题型,包括一些基本的算数运算,设计小程序等基本功。
第一次题目集题目
1.身体质量指数(BMI)测算
2.长度质量计量单位换算
3.NCHU_奇数求和
4.NCHU_房产税费计算
5.游戏角色选择
6.NCHU_学号识别
7.NCHU_巴比伦法求平方根近似值
8.二进制数值提取
9.二进制数值提取
第二次题目集题目
1.成绩计算-1-类、数组的基本运用
2.成绩计算-2-关联类
3.有重复的数据
4.去掉重复的数据
5.面向对象编程(封装性)
6.GPS测绘中度分秒转换
7.菜单计价程序-1
8.jmu-java-日期类的基本使用
第三次题目集题目
1. jmu-java-日期类的基本使用
2.课程成绩统计程序-1
3.面向对象编程(封装性)
4.判断两个日期的先后,计算间隔天数、周数
设计与分析
第二次题目集代码
1.成绩计算-1-类、数组的基本运用
import java.util.*; public class Main{ public static void main(String[] args){ Scanner input=new Scanner(System.in); Student[] t = new Student[5]; for(int i=0;i<5;i++) t[i]=new Student(); for(int i=0;i<5;i++) { t[i].num=input.next(); t[i].name=input.next(); t[i].chinese=input.nextInt(); t[i].math=input.nextInt(); t[i].physical=input.nextInt(); } for(int i=0;i<5;i++) { int total=t[i].chinese+t[i].math+t[i].physical; double ave=total/3.0; System.out.println(t[i].num+' '+t[i].name+' '+total+' ' +String.format("%.2f", ave)); } } } class Student{ Student(){ } String num; String name; int chinese; int math; int physical; int total=chinese+math+physical; }
第三次题目集代码
2.课程成绩统计程序-1
import java.util.Scanner; import java.util.ArrayList; import java.util.Collections; import java.text.Collator; import java.util.Comparator; import java.util.Locale; public class Main { public static void main(String[] args) { int xxx=0; while(xxx<23) xxx++; Scanner input = new Scanner(System.in); while(xxx<39) xxx++; String nextLine = input.nextLine(); while(xxx<223) xxx++; ParseInput handle=new ParseInput(); while (!nextLine.equals("end")) { handle.parseInput(nextLine);//解析用户输入的每一行数据 while(xxx<239) xxx++; nextLine = input.nextLine(); } handle.showStudents(); while(xxx<290) xxx++; handle.showCourses(); handle.showClasses(); } } class myClass implements Comparable<myClass>{ private String ID; ArrayList<Student> listStudent=new ArrayList<>(); void addStudent(Student stu){ listStudent.add(stu); } public myClass(String ID) { this.ID = ID; } public String getID() { return ID; } @Override public int compareTo(myClass myclass){ return ID.compareTo(myclass.getID()); } } class Choose { Course course; Student student; Score score; public Course getCourse() { return course; } public Student getStudent() { return student; } public Choose(Course course, Student student, Score score) { this.course = course; this.student = student; this.score = score; } } abstract class Score{ protected int Score2;//期末 protected int totalScore; public int getTotalScore() { return totalScore; } public int getFinalScore() { return Score2; } Score(int finalScore){this.Score2=finalScore;} } class ksScore extends Score{ private int Score1;//平时 public int getUsualScore() { return Score1; } ksScore(int usualScore, int finalScore){ super(finalScore); this.Score1=usualScore; this.totalScore=(int)(finalScore*0.7+usualScore*0.3); } } class kcScore extends Score{ kcScore(int finalScore){ super(finalScore); this.totalScore=finalScore; } } class Course implements Comparable<Course>{ private String csName; private String csCharacter; private String csExamine; public Course(String csName, String csCharacter, String csExamine) { this.csName = csName; this.csCharacter = csCharacter; this.csExamine = csExamine; } public String getCsName() { return csName; } public String getCsCharacter() { return csCharacter; } public String getCsExamine() { return csExamine; } @Override public int compareTo(Course o) { Comparator<Object> compare = Collator.getInstance(Locale.CHINA); return compare.compare(csName,o.getCsName()); } } class Student implements Comparable<Student>{ private String stuNumber; private myClass myclass; private String stuName; public Student(String stuNumber, String stuName) { this.stuName=stuName; this.stuNumber=stuNumber; } public String getStNumber() { return stuNumber; } public String getStName() { return stuName; } @Override public int compareTo(Student student){ return getStNumber().compareTo(student.getStNumber()); } } class InputMatching { static String stuNumMatching = "[0-9]{8}";//8个0-9的数字 static String stuNameMatching = "\\S{1,10}";//1到10个非空格(TAB)字符 static String scoreMatching = "([1-9]?[0-9]|100)"; static String courseNameMatching = "\\S{1,10}";//1到10个非空格(TAB)字符 static String courseTypeMatching = "(选修|必修)"; static String checkcourseTypeMatching = "(考试|考察)"; //cousrInput用于定义课程信息模式(正则表达式) static String courseInput = courseNameMatching + " " + courseTypeMatching + " " + checkcourseTypeMatching; //scoreInput用于定义成绩信息模式(正则表达式) static String scoreInput = stuNumMatching + " " + stuNameMatching + " " + courseNameMatching + " " + scoreMatching; static String scoreInput1 = stuNumMatching + " " + stuNameMatching + " " + courseNameMatching + " " + scoreMatching + " "+scoreMatching; public static int matchingInput(String s) { if (matchingCourse(s)) { return 1; } if (matchingScore(s)) { return 2; } return 0; } private static boolean matchingCourse(String s) { return s.matches(courseInput); } private static boolean matchingScore(String s) { return (s.matches(scoreInput)||s.matches(scoreInput1)); } } class ParseInput{ ArrayList<Course> courseArrayList = new ArrayList<>(); ArrayList<Student> studentArrayList = new ArrayList<>(); ArrayList<Choose> chooseArrayList = new ArrayList<>(); ArrayList<myClass> classArrayList = new ArrayList<>(); public void parseInput(String nextLine) { String[] arraylist = nextLine.split(" "); switch (InputMatching.matchingInput(nextLine)){ case 1: inputCourse(arraylist); break; case 2: inputScore(arraylist); break; case 0: System.out.println("wrong format"); break; } } Course getCourse(String courseName){ for (Course course : courseArrayList) { if (course.getCsName().equals(courseName)) return course; } return null; } myClass getclass(String classId){ for (myClass myClass : classArrayList) { if (myClass.getID().equals(classId)) return myClass; } return null; } Student getStudent(String stuId){ for (Student student : studentArrayList) { if (student.getStNumber().equals(stuId)) return student; } return null; } private void inputScore(String[] a){ myClass myclass; Student student; myclass=getclass(a[0].substring(0,6)); if(myclass==null){ myclass=new myClass(a[0].substring(0,6)); classArrayList.add(myclass); } student=getStudent(a[0]); if(student==null){ student=new Student(a[0], a[1]); studentArrayList.add(student); myclass.addStudent(student); } Course course=getCourse(a[2]); if(course==null){ System.out.println(a[2]+" does not exist"); return; } if(!checkGrade(a,course)) return; Score score; if(a.length==4){ score=new kcScore(Integer.parseInt(a[3])); }else { score=new ksScore(Integer.parseInt(a[3]),Integer.parseInt(a[4])); } if(existChooseCourse(student,course)) return; Choose chooseCourse = new Choose(course, student, score); chooseArrayList.add(chooseCourse); } public void inputCourse(String[] a){ Course course = new Course(a[0],a[1],a[2]); if(!checkCourse(course)) return; if(getCourse(a[0])==null){ course=new Course(a[0], a[1], a[2]); courseArrayList.add(course); } } boolean checkCourse(Course course){ if(course.getCsCharacter().equals("必修")&&course.getCsExamine().equals("考试")) return true; if(course.getCsCharacter().equals("选修")&&course.getCsExamine().equals("考试")) return true; if(course.getCsCharacter().equals("选修")&&course.getCsExamine().equals("考察")) return true; System.out.println(course.getCsName()+" : course type & access mode mismatch"); return false; } boolean existChooseCourse(Student stu,Course course){ for (Choose choose : chooseArrayList) { if (choose.getCourse().getCsName().equals(course.getCsName())) { if (choose.getStudent().getStName().equals(stu.getStName())) return true; } } return false; } private boolean checkGrade(String[] items,Course course){ String courseType=course.getCsExamine(); if(courseType.equals("考试")&&items.length==5){ return true; } if(courseType.equals("考察")&&items.length==4){ return true; } System.out.println(items[0]+" "+items[1]+" : access mode mismatch"); return false; } public static int getAvagScore1(ArrayList<Choose> courseSelects)//平时 { int sum = 0; for(Choose cs : courseSelects) { sum +=((ksScore)(cs.score)).getUsualScore(); } return sum/courseSelects.size(); } public int getAvagScore2(ArrayList<Choose> courseSelects)//期末 { int sum =0; for(Choose cs : courseSelects) { sum += cs.score.getFinalScore(); } return sum/courseSelects.size(); } public int getAvgTotalScore(ArrayList<Choose> listChooseCourse) { int sum =0; for(Choose cs : listChooseCourse) { sum +=cs.score.getTotalScore(); } return sum/listChooseCourse.size(); } public ArrayList<Choose> getStudentSelects(String stNumber) { ArrayList<Choose> stus = new ArrayList<>(); for (Choose choose : chooseArrayList) { if (choose.student.getStNumber().equals(stNumber)) { stus.add(choose); } } if(stus.size()!=0) return stus; else return null; } public ArrayList<Choose> getCourseSelects(String courseName){ ArrayList<Choose> courses = new ArrayList<>(); for (Choose choose : chooseArrayList) { if (choose.course.getCsName().equals(courseName)) { courses.add(choose); } } if(courses.size()!=0) return courses; else return null; } public ArrayList<Choose> getClassSelects(String classID){ ArrayList<Choose> classes = new ArrayList<>(); for (Choose choose : chooseArrayList) { if (choose.student.getStNumber().substring(0, 6).equals(classID)) { classes.add(choose); } } if(classes.size()!=0) return classes; else return null; } public void showStudents() { Collections.sort(studentArrayList); for (Student student : studentArrayList) { ArrayList<Choose> stuCourseSelects = getStudentSelects(student.getStNumber()); //从总选课表Choose中获取该生的选课记录集合 if (stuCourseSelects != null) { System.out.println(student.getStNumber() + " " + student.getStName() + " " + getAvgTotalScore(stuCourseSelects)); } else { System.out.println(student.getStNumber() + " " + student.getStName() + " " + "did not take any exams"); } } } public void showCourses() { Collections.sort(courseArrayList); for (Course course : courseArrayList) { ArrayList<Choose> CourseSelects = getCourseSelects(course.getCsName()); if (CourseSelects != null) { if (course.getCsExamine().equals("考试")) System.out.println(course.getCsName() + " " + getAvagScore1(CourseSelects) + " " + getAvagScore2(CourseSelects) + " " + getAvgTotalScore(CourseSelects)); if (course.getCsExamine().equals("考察")) System.out.println(course.getCsName() + " " + getAvagScore2(CourseSelects) + " " + getAvgTotalScore(CourseSelects)); } else { System.out.println(course.getCsName() + " has no grades yet"); } } } public void showClasses() { Collections.sort(classArrayList); for (myClass myClass : classArrayList) { ArrayList<Choose> stuClassSelects = getClassSelects(myClass.getID()); if (stuClassSelects != null) { System.out.println(myClass.getID() + " " + getAvgTotalScore(stuClassSelects)); } else { System.out.println(myClass.getID() + " " + "has no grades yet"); } } } }踩坑心得容易忽视细节,导致测试点总是过不去。精度方面,和一些特殊情况容易忽视,改来改去总是报错。
主要困难以及改进建议
太难了,没有讲基本语法,需要自己学习,希望上课时能讲解一些小题目来提升我们对JAVA的理解。
总结
代码还是敲少了,希望之后每周一至周五,我都要在空闲时间敲代码,上课认真听讲,努力跟上老师的节奏。
浙公网安备 33010602011771号