9159金沙游艺场-奥门金沙游艺场-[欢迎您]

9159金沙游艺场为您呈现最新的面貌!,目前注册送体验金,欢迎您将成为影视娱乐行业新的风向标,是亚洲的优质娱乐先锋。

根据学生对象数序9159金沙游艺场

日期:2019-10-07编辑作者:前端

Java中List集合排序的方法 比较器的使用 根据学生对象数序 语文 英语成绩总和进行sort排序,javasort

package com.swift;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Test2_ObjectIO {

    @SuppressWarnings("unchecked")
    public static void main(String[] args) {

        /*
         * 第2题: 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
         * 输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。
         * 要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
         */
        List<Student> list = new ArrayList<Student>();
        Scanner scan = new Scanner(System.in);
        for (int i = 1; i <=5; i++) {
            System.out.println("请输入第"+i+"学生信息:格式为 name 60 60 60");
            String name = scan.next();
            Float yuwen = scan.nextFloat();
            Float shuxue = scan.nextFloat();
            Float yingyu = scan.nextFloat();
            Student stu = new Student(name, yuwen, shuxue, yingyu);
            list.add(stu);
        }

        for(Student stu:list) {
            System.out.println(stu.toString());
        }

        Collections.sort(list, new Comparator<Student>() {

            @Override
            public int compare(Student o1, Student o2) {
                float num=(o2.getShuxue()+o2.getYingyu()+o2.getYuwen())-(o1.getShuxue()+o1.getYingyu()+o1.getYuwen());
                int i=(int) num;
                return i;
            }
        });

        for(Student stu:list) {
            System.out.println(stu.toString());
        }
    }
}

class Student {
    private String name;
    private float yuwen;
    private float shuxue;
    private float yingyu;

    public String getName() {
        return name;
    }

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

    public float getYuwen() {
        return yuwen;
    }

    public void setYuwen(float yuwen) {
        this.yuwen = yuwen;
    }

    public float getShuxue() {
        return shuxue;
    }

    public void setShuxue(float shuxue) {
        this.shuxue = shuxue;
    }

    public float getYingyu() {
        return yingyu;
    }

    public void setYingyu(float yingyu) {
        this.yingyu = yingyu;
    }

    public Student(String name, float yuwen, float shuxue, float yingyu) {
        super();
        this.name = name;
        this.yuwen = yuwen;
        this.shuxue = shuxue;
        this.yingyu = yingyu;
    }

    public Student() {
        super();
    }

    @Override
    public String toString() {
        return "Student [name=" + name + ", yuwen=" + yuwen + ", shuxue=" + shuxue + ", yingyu=" + yingyu + "]";
    }

}

比较器就是个匿名内部类,Collections.sort(list,Comparator<Student>(){});

然后实现其中的compare方法,返回一个int类型的值,正数 负数 0分别代表大于小于等于

增加IO流的内容代码如下;

package com.swift;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Test2_ObjectIO {

    @SuppressWarnings("unchecked")
    public static void main(String[] args) {

        /*
         * 第2题: 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
         * 输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。
         * 要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
         */
        List<Student> list = initiateList();

        for(Student stu:list) {
            System.out.println(stu.toString());
        }

        Collections.sort(list, new Comparator<Student>() {

            @Override
            public int compare(Student o1, Student o2) {
                float num=(o2.getShuxue()+o2.getYingyu()+o2.getYuwen())-(o1.getShuxue()+o1.getYingyu()+o1.getYuwen());
                int i=(int) num;
                return i;
            }
        });

        initiate_IO(list);


    }

    private static void initiate_IO(List<Student> list) {
        BufferedWriter bw;
        StringBuffer sb=new StringBuffer();
        for(Student stu:list) {
            sb.append(stu.toString());
            sb.append("rn");
        }
        try {
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("src\stu.txt"),"utf-8"));//需要标明路径
            bw.write(sb.toString());
            bw.flush();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } 

    }

    private static List<Student> initiateList() {
        List<Student> list = new ArrayList<Student>();
        Scanner scan = new Scanner(System.in);
        for (int i = 1; i <=5; i++) {
            System.out.println("请输入第"+i+"学生信息:格式为 name 60 60 60");
            String name = scan.next();
            Float yuwen = scan.nextFloat();
            Float shuxue = scan.nextFloat();
            Float yingyu = scan.nextFloat();
            Student stu = new Student(name, yuwen, shuxue, yingyu);
            list.add(stu);
        }
        return list;
    }
}

class Student {
    private String name;
    private float yuwen;
    private float shuxue;
    private float yingyu;

    public String getName() {
        return name;
    }

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

    public float getYuwen() {
        return yuwen;
    }

    public void setYuwen(float yuwen) {
        this.yuwen = yuwen;
    }

    public float getShuxue() {
        return shuxue;
    }

    public void setShuxue(float shuxue) {
        this.shuxue = shuxue;
    }

    public float getYingyu() {
        return yingyu;
    }

    public void setYingyu(float yingyu) {
        this.yingyu = yingyu;
    }

    public Student(String name, float yuwen, float shuxue, float yingyu) {
        super();
        this.name = name;
        this.yuwen = yuwen;
        this.shuxue = shuxue;
        this.yingyu = yingyu;
    }

    public Student() {
        super();
    }

    @Override
    public String toString() {
        return "Student [name=" + name + ", yuwen=" + yuwen + ", shuxue=" + shuxue + ", yingyu=" + yingyu + "]";
    }

}

 

比较器的使用 根据学生对象数序 语文 英语成绩总和进行sort排序,javasort package com.swift; import java.util.ArrayList; imp...

本文由9159金沙游艺场-奥门金沙游艺场-[欢迎您]发布于前端,转载请注明出处:根据学生对象数序9159金沙游艺场

关键词:

Java学习笔记33

Java学习笔记33(集合框架七:Collections工具类), 数组有工具类,方面操作数组 9159金沙游艺场,集合也有工具类:...

详细>>

throw抛出自定义业务逻辑异常

java中异常处理机制 throw抛出自定义业务逻辑异常 throws继续抛出 catch捕获后会自动继续抛向调用方法,throwthrows packa...

详细>>

Linux文本管理命令

abcd bc [root@localhost test]# diff -u diff1 diff2 --- diff1      2016-08-05 19:46:36.985538120 +0800 +++ diff2      2016-08-05 19:46:54.95183676...

详细>>

恢复删除的文件

Linux有时候执行了 rm -rf等操作误删了文件绝对是一件可怕的事情,好在有一些解决的办法可以临时救急。这时我们就...

详细>>