「Java学习打卡」42、面向对象题目练习

编写一个程序,统计学生成绩,其功能包括输入学生的姓名和成绩,按成绩从高到低排列打印输出,对前%70的学生定为合格(PASS),而后30%的学生定为不合格(FAIL)
思路:设计一个类student,包含学生的姓名和成绩等数据。设计一个类Compute: sort()、disp(),它们分别用于按成绩排序和输出数据。

import java.util.Scanner;
class student{
     
    char[] name=new char[10];
    int deg;

    void setname(char[] na) {
     
        this.name= na;
    }
    char[] getname() {
     
        return name;
    }
    void setdeg(int d) {
     
        deg= d;
    }
    int getdeg(){
     
        return deg;
    }
}


class compute{
     
    int ns;
    student na[]=new student[10];
    void getdata(){
     
        System.out.print("输入学生人数:");
        Scanner scan = new Scanner(System.in);
        int ns = scan.nextInt();
        System.out.print("输入学生姓名和成绩:\n");
        for(int i=0;i<ns;i++){
     
            Scanner scan0 = new Scanner(System.in);
            String str=scan0.nextLine();
            char[] tname=str.toCharArray();
            int tdeg = scan0.nextInt();
            na[i].setname(tname);
            na[i].setdeg(tdeg);
        }
    }

    void sort(){
     
        int i,j,pick=0;
        student temp;
            for(i=0;i<ns-1;i++)
        pick=i;
        for(j=i+1;j<ns;j++){
     
        if(na[j].getdeg()>na[pick].getdeg())
            pick=j;
        temp=na[i];
        na[i]=na[pick];
        na[pick]=temp;
        }
    }
    void disp() {
     
        int cutoff, i;
        System.out.print("RESULT\n");
        System.out.print("姓名 成绩 合格否\n");
        cutoff = ns * 7 / 10 - 1;
        for (i = 0; i < ns; i++) {
     
            System.out.print(na[i].name +"\t"+ na[i].deg);
            if (cutoff <= 0.7)
                System.out.print("\tPASS\n");
            else
                System.out.print("\tFAIL\n");
        }
    }
}

public class Test {
     
    public static void main(String[] args) {
     
        compute obj=new compute();
        obj.getdata();
        obj.sort();
        obj.disp();

    }
}

你可能感兴趣的:(「Java学习打卡」42、面向对象题目练习)