由控制台按照固定格式输入学生信息,包括学号,姓名,年龄信息,当输入的内容 为exit退出;将输入的学生信息分别封装到一个Student对象中,再将每个Student 对象加入到一个集合中,要求。。。。

由控制台按照固定格式输入学生信息,包括学号,姓名,年龄信息,当输入的内容 exit退出;将输入的学生信息分别封装到一个Student对象中,再将每个Student  对象加入到一个集合中,要求集合中的元素按照年龄大小正序排序;最后遍历集合, 将集合中学生信息写入到记事本,每个学生数据占单独一行。

推荐步骤:

a)    创建Student类,并指定按照年龄正序排列

b)    通过控制台输入多个不同Student信息。格式规定为:编号#姓名#年龄

c)    取出字符串中相应信息放入Student对象,并将Student加入到集合中

d)    遍历集合的过程中将学生的信息输入到记事本 难点:

e)    如何指定学生按照年龄正序排列

f)     如果从字符串“编号#姓名#年龄 ”中提取学生信息

分析:将控制台输入的信息都存到一个list集合中,然后从集合中提取关键信息元素再存放到student数组中,最后遍历数组,顺便直接用输出流写到笔记本中即可。

Student类:
public class Student {
    private String number;
    private String name;
    private int age;

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Student(String number, String name, int age) {
        this.number = number;
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "number='" + number + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
Test测试类:
import java.util.ArrayList;
import java.util.Scanner;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<String> list = new ArrayList<>();//接收每次输入的学生信息
        String s;
        int start=0;
       do {
           System.out.println("请按照指定格式输入:编号#姓名#年龄");
            s = sc.nextLine();
           list.add(s);
       }while (!s.equals("exit"));
       list.remove("exit");
        System.out.println("list集合为:"+list);
        //创建一个学生对象的数组
        Student[] students = new Student[4];//限定只获取4个
        String[]number=new String[list.size()];
        String[]name=new String[list.size()];
         int []age=new int[list.size()];
        for(int i=0;i<list.size();i++){
            number[i]=list.get(i).split("#")[0];//用substring不方便切,改用split
            name[i]=list.get(i).split("#")[1];
            age[i]=Integer.parseInt(list.get(i).split("#")[2]);
           students[i]=new Student(number[i],name[i],age[i]);
        }//这限制了创建的学生对象的不便,改用数组存储学生对象
//        Student student1 = new Student(number[0],name[0],age[0]);
//        Student student2 = new Student(number[1],name[1],age[1]);
//        Student student3 = new Student(number[2],name[2],age[2]);
//        Student student4 = new Student(number[3],name[3],age[3]);
        //实现学生信息按照年龄从小到大(正序)排序
        for(int i=0;i<students.length;i++){
            for(int j=i+1;j<students.length;j++){
                if(students[i].getAge()>students[j].getAge()){
                   Student stu=students[i];
                    students[i]=students[j];//数组能进行遍历排序
                    students[j]=stu;
                }
            }
        }
        /*20193013#袁世凯#21,20203001#孙中山#18,20183013#蒋介石#19,20294033#汪精卫#16*/
        String filePath = "D://桌面临时文件/学生信息.txt"; // 替换为你的文件路径和文件名

        // 使用try-with-resources语句自动关闭资源
        try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath))) {
            System.out.println("按照年龄排序后的学生信息为:");
            // 写入字符串到文件
            for (Student student : students) {
                System.out.println(student);
               bw.write(student.toString());
               bw.newLine();
               bw.flush();
            }
        }
        catch (IOException e) {
            // 处理可能出现的I/O异常
            e.printStackTrace();
        }
    }

}


  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的K8409

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值