Java编程题!新人,求代码,最好有详细的注解!感谢各位大神~

2025-03-04 22:00:01
推荐回答(2个)
回答1:

环境:JDK1.8+。然后复制粘贴代码即可用。

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

public class MainController {

    public static void main(String[] args) {

        //一.将图一四个人的信息放入list中
        List students = new ArrayList<>();
        Student s1 = new Student("小赵",getTime("1992.08.11"),400);
        Student s2 = new Student("小钱",getTime("1995.01.24"),750);
        Student s3 = new Student("小孙",getTime("1990.06.05"),670);
        Student s4 = new Student("小李",getTime("1991.12.17"),550);
        students.add( s1 );
        students.add( s2 );
        students.add( s3 );
        students.add( s4 );
        //二.计算四个人成绩的平均值,并输出每个人比平均值多或少多少分。
        System.out.println("二.计算四个人成绩的平均值,并输出每个人比平均值多或少多少分。");
        average( students );
        //三.将四人排序输出,控制台输出结果请参照图二
        System.out.println("三.将四人排序输出,控制台输出结果请参照图二");
        sort( students );
        //四.用递归计算出小赵的成绩以每月2%的增长,多少个月后他的成绩可以超过小钱。
        System.out.println("四.用递归计算出小赵的成绩以每月2%的增长,多少个月后他的成绩可以超过小钱。");
        markBeyong( students.get(0).getMark() , students.get(1).getMark() );

    }

    public static  void average( List students ){
        int sum = 0;//总成绩
        for ( Student student: students ){
            sum = sum + student.getMark();
        }
        int average = sum/students.size();//平均成绩
        students.forEach( student -> {
            if ( student.getMark() > average ){
                System.out.println( student.getName() + "比平均分高:" + (student.getMark() - average) );
            }else if ( student.getMark() < average ){
                System.out.println( student.getName() + "比平均分低:" + ( average - student.getMark()) );
            }else {
                System.out.println( student.getName() + "和平均分一样" );
            }
        } );
    }

    public static void sort( List students ){
        List studentBir = new ArrayList<>();
        studentBir.addAll( students );
        System.out.println("①第一种排序,按照出生年月日升序;");
        Collections.sort( studentBir, (o1, o2) -> ( o1.getBirthDay().compareTo( o2.getBirthDay() ) ) );
        studentBir.forEach( stu ->{
            System.out.println( stu.getName() + " | " + getTime(stu.getBirthDay()) + " | " + stu.getMark() );
        } );
        System.out.println(" ②第二种排序,按照成绩降序;");
        List markDesc = students.stream().sorted((a, b) -> b.getMark() - a.getMark()).collect(Collectors.toList());
        markDesc.forEach( stu ->{
            System.out.println( stu.getName() + " | " + getTime(stu.getBirthDay()) + " | " + stu.getMark() );
        } );
        System.out.println("③比较输出:计算他们互相大多少天,要考虑到闰年。");
        for ( int i = 0 ; i < students.size() ; i++ ){

            for ( int j = i + 1 ; j < students.size() ; j++ ){
                Long ageSub = students.get( i ).getBirthDay().getTime() - students.get( j ).getBirthDay().getTime();
                Long dateSub = ageSub/(1000*60*60*24);
                if ( dateSub > 0 ){
                    System.out.println( students.get( i ).getName() + "比" + students.get( j ).getName() + "大" + dateSub );
                }else if ( dateSub < 0 ){
                    System.out.println( students.get( i ).getName() + "比" + students.get( j ).getName() + "小" + -dateSub );
                }else {
                    System.out.println( students.get( i ).getName() + "和" + students.get( j ).getName() + "同日出生"  );
                }
            }

        }

    }

    public static void markBeyong( int mark ,int targetMark){
        double markDou = mark;
        double targetMarkDou = targetMark;
        boolean b = true;
        int month = 0;
        while ( b ){
            if ( markDou < targetMarkDou ){
                markDou = markDou*1.02;
                month ++;
            }else {
                System.out.println("一共用了" + month + "个月反超");
                b = false;
            }
        }
    }

    public static Date getTime( String target ) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
            Date date = sdf.parse(target);
            return date;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    public static String getTime( Date target ) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
            String date = sdf.format( target );
            return date;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }


}

class Student {

    private String name;
    private Date birthDay;
    private Integer mark;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getBirthDay() {
        return birthDay;
    }

    public void setBirthDay(Date birthDay) {
        this.birthDay = birthDay;
    }

    public Integer getMark() {
        return mark;
    }

    public void setMark(Integer mark) {
        this.mark = mark;
    }

    public Student(){
    }

    public Student(String name,Date birthDay , Integer mark){
        this.name = name;
        this.birthDay = birthDay;
        this.mark = mark;
    }


}

回答2:

专业代写,100折现可以优惠