前言

  前三次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的理解。
总结
  代码还是敲少了,希望之后每周一至周五,我都要在空闲时间敲代码,上课认真听讲,努力跟上老师的节奏。