01.把集合中的学生信息写入文本文件

综合练习一

  • A:键盘录入3个学生信息(学号,姓名,年龄,居住地)存入集合,要求学生信息的学号不能重复
  • B:遍历集合把每一个学生信息存入文本文件
  • C:每一个学生信息为一行数据,每行学生的学号,姓名,年龄和居住地在文件中均以逗号分隔
package com.itheima;
/*
 * 标准的学生类
 */
public class Student {
    // 学号
    private String id;
    // 姓名
    private String name;
    // 年龄
    private String age;
    // 居住地
    private String address;

    public Student() {
        
    }

    public Student(String id, String name, String age, String address) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.address = address;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

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

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

}
package com.itheima;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

/*
 * 键盘录入3个学生信息(学号,姓名,年龄,居住地)存入集合。
 * 然后遍历集合把每一个学生信息存入文本文件(每一个学生信息为一行数据,自己定义分割标记)
 * 
 * 分析:
 *      A:定义学生类
 *      B:创建集合对象
 *      C:写方法实现键盘录入学生信息,并把学生对象作为元素添加到集合
 *      D:创建输出缓冲流对象
 *      E:遍历集合得到每一个学生信息,并把学生信息按照一定的格式写入文本文件
 *              举例:001,向问天,30,北京
 *      F:释放资源
 */
public class ArrayListToFile {
    public static void main(String[] args) throws IOException {
        //创建集合对象
        ArrayList array = new ArrayList();
        
        //写方法实现键盘录入学生信息,并把学生对象作为元素添加到集合
        addStudent(array);
        addStudent(array);
        addStudent(array);
        
        //创建输出缓冲流对象
        BufferedWriter bw = new BufferedWriter(new FileWriter("array.txt"));
        
        //遍历集合得到每一个学生信息,并把学生信息按照一定的格式写入文本文件
        for(int x = 0; x < array.size(); x++) {
            Student s = array.get(x);
            //001,向问天,30,北京
            StringBuilder sb = new StringBuilder();
            sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAge()).append(",").append(s.getAddress());
            
            bw.write(sb.toString());
            bw.newLine();
            bw.flush();
        }
        
        //释放资源
        bw.close();
    }
    
    //添加方法
    private static void addStudent(ArrayList array) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        
        //为了能让id能够被访问,我们就把id定义到循环的外边
        String id;
        
        System.out.println("请输入学号");
        id = sc.nextLine();
        
        //判断学号有没有被占用
        //定义标记
        boolean flag = false;
        //遍历集合,得到每一个学生
        for(int x = 0; x < array.size(); x++) {
            Student s = array.get(x);
            //获取该学生的学号,和键盘录入人的学号进行比较
            if(s.getId().equals(id)) {
                flag = true;//学号被占用
                break;
            }
            if(flag == true) {
                System.out.println("你输入的学号已经被占用了,请重新输入");
            }else {
                break;//结束循环
            }
        }
        
        System.out.println("请输入姓名");
        String name = sc.nextLine();
        
        System.out.println("请输入年龄");
        String age = sc.nextLine();
        
        System.out.println("请输入居住地");
        String address = sc.nextLine();
        
        //创建学生对象
        Student s = new Student();
        s.setId(id);
        s.setName(name);
        s.setAge(age);
        s.setAddress(address);
        
        //把学生对象添加到集合里
        array.add(s);
        
        //给出提示
        System.out.println("添加学生成功");
    }
    
}

你可能感兴趣的:(01.把集合中的学生信息写入文本文件)