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)