308 集合到文件数据排序改进版

41 篇文章 0 订阅

308 集合到文件数据排序改进版

【需求】

键盘录入5个学生的信息,

每个学生。包括姓名、语文分数、数学分数、英语分数。

顺序。按总分从高到低 顺序写入文件

格式。姓名:语文分数,数学分数,英语分数,例如MOLE:80,70,71

【思路】

  1. 定义学生类
  2. 创建 TreeSet集合,用 比较器排序 实现排序【】
  3. 键盘录入 学生数据
  4. 创建 学生对象,把 学生数据 赋值给 学生对象成员变量
  5. 添加 学生对象 到TreeSet集合
  6. 创建 字符缓冲输出流对象
  7. 遍历集合,得到每个学生对象
  8. 拼接 学生对象的数据 为 指定格式的字符串
  9. 用 输入流的方法 写数据
  10. 释放资源

--------------------------------------------------------------

package e308;

public class Student308 {

    private String name;

    private int chiScore;

    private int matScore;

    private int engScore;

    …

    public int getSum() {

        return this.chiScore + this.matScore + this.engScore;

    }

}

--------------------------------------------------------------

package e308;

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

import java.util.Comparator;

import java.util.Scanner;

import java.util.TreeSet;

public class OriginalEdition {

    public static void main(String[] args) throws IOException {

        TreeSet<Student308> ts = new TreeSet<>(new Comparator<Student308>() {

            @Override

            public int compare(Student308 s1, Student308 s2) {

                int num = s2.getSum() - s1.getSum();

//细化比较各科分数

                int num2 = num == 0 ? s1.getChiScore() - s2.getChiScore() : num;

                int num3 = num2 == 0 ? s1.getMatScore() - s2.getMatScore() : num2;

                int num4 = num3 == 0 ? s1.getName().compareTo(s2.getName()) : num3;

                return num4;

            }

        });

        for (int i = 0; i < 5; i++) {

            Scanner sc = new Scanner(System.in);

            System.out.println("the score of NO." + (i + 1) + " student");

            System.out.println("name:");

            String name = sc.nextLine();

            System.out.println("Chinese:");

            int chiScore = sc.nextInt();

            System.out.println("Math:");

            int matScore = sc.nextInt();

            System.out.println("English:");

            Student308 s = new Student308();

            s.setName(name);

            s.setChiScore(chiScore);

            s.setMatScore(matScore);

            s.setEngScore(sc.nextInt());

            ts.add(s);

        }

        BufferedWriter bw = new BufferedWriter(new FileWriter("myCharStream\\src\\e308\\StudentFile.txt"));

        for (Student308 s : ts) {

            StringBuilder sb = new StringBuilder();

            sb.append(s.getChiScore()).append(",").append(s.getMatScore()).append(",").append(s.getEngScore()).append("_").append(s.getName()).append("_").append(s.getSum());

            bw.write(sb.toString());

            bw.newLine();

            bw.flush();

        }

    }

}

--------------------------------------------------------------

(StudentFile.txt)

9,9,9_BADGER_27

8,8,8_RAT_24

7,7,7_MOLE_21

6,6,6_OTTER_18

5,5,5_TOAD_15

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Scala 2.11.8是一个比较老版本的Scala编程语言。它有许多特性和改进,使得开发者可以更方便地使用和编写Scala代码。 首先,Scala 2.11.8引入了一种新的字符串插值方式,即“s”插值器。使用这种插值方式,可以在字符串中直接插入变量,而无需使用字符串连接符。这样可以使得代码更加简洁和易读。 此外,Scala 2.11.8还提供了一个新的SAM(Single Abstract Method)转换规则。这意味着可以将函数字面量直接传递给期望函数接口的地方,而不需要显式地创建一个实现该接口的匿名类。这样可以减少代码的冗余,并提高开发效率。 在Scala 2.11.8中,还加入了对Java 8的一些新特性的支持,如Java 8的日期和时间API。这使得Scala开发者可以更方便地使用这些新功能,而无需依赖其他库。 此外,Scala 2.11.8还对编译器进行了一些优化,使得编译速度更快,代码执行效率更高。这对于大型项目和性能要求较高的应用程序来说是非常有益的。 总之,Scala 2.11.8是一个功能强大的版本,它提供了许多新特性和改进,帮助开发者更轻松地编写和维护Scala代码。无论是在语言特性、开发效率还是执行性能方面,它都有着显著的提升。 ### 回答2: Scala是一种现代化的编程语言,scala2.11.8是该语言的一个版本。它具有许多令人兴奋的特性和功能。 首先,Scala2.11.8引入了对Java 8语法的全面支持。这意味着我们可以使用Java 8中引入的Lambda表达式、函数接口和Stream API等特性来编写Scala代码,从而增加代码的简洁性和可读性。 其次,Scala2.11.8提供了对新的模式匹配特性的支持。模式匹配是Scala中一种非常强大且灵活的编程模式,使得我们可以根据数据结构的不同情况选择不同的处理逻辑,这对于处理复杂数据结构非常有用。 此外,Scala2.11.8还增强了对XML和正则表达式的支持。对于XML,Scala提供了内建的XML文档支持,使得我们可以使用类似于HTML的标记语言来处理和生成XML文档。对于正则表达式,Scala提供了一套功能强大且易于使用的API,可以轻松地进行复杂的字符串匹配和替换操作。 另一个重要的特性是Scala2.11.8对并发编程的增强。Scala提供了一套丰富的并发编程库,其中包括Akka框架,它是一个基于Actor模型的并发编程框架,可以简化并发代码的编写和维护。 最后,Scala2.11.8还改进了编译器的性能和稳定性,并修复了许多bug和问题。这使得我们可以更快速、更可靠地编写、构建和运行Scala代码。 总之,Scala2.11.8是一个令人兴奋的版本,它增加了对Java 8语法、模式匹配、XML、正则表达式和并发编程的支持,同时改进了编译器的性能和稳定性。这些特性使得开发者可以更轻松地编写功能强大、高效且可维护的Scala代码。 ### 回答3: Scala是一种面向对象和函数式编程的编程语言,2.11.8是其中的一个版本。它提供了许多新的特性和改进,使得开发者能够更加方便地编写高效且易于维护的代码。 首先,Scala 2.11.8引入了新的“Try”类型,用于处理代码块中可能抛出异常的情况。这个类型代表了计算结果,可以是成功的值或者一个异常。通过使用“Try”类型,开发者可以更好地控制异常处理的逻辑,并减少代码中的错误。 其次,Scala 2.11.8改进了对Java 8的支持。它增加了对Java 8的新特性,如lambda表达式和函数式接口的支持。这使得Scala可以更好地与Java 8代码进行互操作,从而更方便地使用Java 8的强大功能。 此外,Scala 2.11.8还引入了一些编译器的改进,提升了编译速度和性能。这使得开发者可以更加高效地编译和运行他们的Scala代码。 另外,Scala 2.11.8还提供了对异步编程的支持。通过使用“Future”和“Promise”等API,开发者可以方便地编写异步代码,实现高效的并发和并行操作。 最后,Scala 2.11.8还改进了集合库,增加了一些新的集合类型和功能。这些改进使得开发者能够更方便地处理和操作集合数据,提高了代码的可读性和可维护性。 总结起来,Scala 2.11.8引入了许多新的特性和改进,使得开发者能够更加方便地编写高效且易于维护的代码。它提供了对异步编程和Java 8的支持,改进了编译速度和性能,增加了新的集合类型和功能。这使得Scala成为一个强大的编程语言,适用于各种类型的应用开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值