package myAPITest;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
/*
*键盘录入三个学生信息(学号,姓名,年龄,居住地)存入集合。然后遍历集合把每一个学生信息存入文本文件(每一个学生信息为一行数据,自己定义分割标记)
*步骤:
* A:编写一个学生类
* B:创建集合对象
* C:写方法实现键盘录入学生信息并把学生对象作为元素添加到集合
* D:创建输出缓冲流对象,将集合中的元素输出到文件中打印在控制台上
* E:遍历集合,得到每一个学生信息将,并把学生信息按照一定的格式写入文本文件
*/
public class ArrayListToFile{
public static void main(String [] args) throws IOException{
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();
//调用方法
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);
//输出形式:2018132003,闫晨曦,20,安徽
StringBuilder sb = new StringBuilder();
sb.append(s.getId()).append(s.getName()).append(s.getAge()).append(s.getAddress());
bw.write(sb.toString());
bw.newLine();
bw.flush();
}
//释放资源
bw.close();
}
//添加学生
public static void addStudent(ArrayList<Student> array) {
//创建录入对象
Scanner sc = new Scanner(System.in);
//判断学生学号是否已存在
String id ;
while(true) {
System.out.println("请输入学生学号:");
id = sc.nextLine();
//遍历集合,查询学号是否存在
//定义一个索引
boolean flag = false;
for(int x=0; x<array.size(); x++) {
//创建学生对象
Student s = new Student();
if(s.getId().equals(id)) {
flag = true;
break;//计结束for循环
}
}
if(flag) {
System.out.println("对不起,你想要添加的学号已存在,请重新输入!");
}else {
break;//退出while循环语句
}
}
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("添加成功!");
}
}
//学生类就不上传了
//报错信息
Exception in thread "main" java.lang.NullPointerException
at myAPITest.ArrayListToFile.addStudent(ArrayListToFile.java:58)
at myAPITest.ArrayListToFile.main(ArrayListToFile.java:24)