IO流,集合,集合遍历,键盘录入,综合性题目,新手练习必备

         今天看了一道IO流的综合性题目,觉得做起来很上手,而且用到了,IO流,键盘录入,集合,集合遍历,可以说把基础课程较为核心的知识都用到了,代码长,但是足够提升综合的能力,下面分享给大家.微笑微笑微笑


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


/*
键盘录入3个学生信息(学号,姓名,年龄,居住城市)存入集合。--为了提高代码的复用性,可以封装到方法中
然后遍历集合把每一个学生信息存入文本文件(每一个学生信息为一行,自己定义分割标记)

1. 创建集合。
2. 调用三次addStudent方法,把学生添加到集合
3. 创建BufferedWriter对象,用来写入
4. 遍历集合,拿到每一个学生对象。
5. 把这个学生对象的各个属性写入到文本文件  
6. 换行
7. 刷新
8. 释放资源
 */
public class Demo01ArrayListToFile {
public static void main(String[] args) throws IOException {
//创建集合。
ArrayList<Student> list = new ArrayList<>();
//调用三次addStudent方法,把学生添加到集合
addStudent(list);
addStudent(list);
addStudent(list);

//创建BufferedWriter对象,用来写入
BufferedWriter bw = new BufferedWriter(new FileWriter("stu.txt"));

//遍历集合,拿到每一个学生对象。
for(int i = 0; i < list.size(); i++) {
Student s = list.get(i);
//把这个学生对象的各个属性写入到文本文件  
bw.write(s.getId() + "," + s.getName() + "," + s.getAge() + "," + s.getAddress());
//换行
bw.newLine();
//刷新
bw.flush();
}
//释放资源
bw.close();
}
/*
* 键盘录入学生信息,并且保存到集合
* 参数列表:ArrayList<Student>
* 返回值类型:void
*/
public static void addStudent(ArrayList<Student> list) {
/*
* 键盘录入学生信息
* 根据录入的学生信息创建对象
* 把创建的对象放入到集合中
*/
/*
* 思路:
* 1. 把键盘录入id这一步放入到死循环中
*  2. 定义变量,当做标记,记录这个id在集合中是否存在。如果为true代表重复,false代表不重复
*  3. 遍历集合,拿到里面的每一个学生对象
*  4. 判断我们输入的id和当前遍历到的学生对象的id是否相同,如果相同代表重复,就把标记改为true,break
*  5. 判断标记,如果为true,就是重复,就开始下次循环重新录入
*   为false,不重复,可以录入其他的信息
*/

String id;
//键盘录入学生信息
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("请您录入学号");
id = sc.nextLine();
//定义变量,当做标记,记录这个id在集合中是否存在。如果为true代表重复,false代表不重复
boolean flag = false;
//遍历集合,拿到里面的每一个学生对象
for(int i = 0; i < list.size(); i++) {
//拿到里面的每一个学生对象
Student stu = list.get(i);
//判断我们输入的id和当前遍历到的学生对象的id是否相同,如果相同代表重复,就把标记改为true,break
if(id.equals(stu.getId())) {
flag = true;
break;
}
}

//判断标记,如果为true,就是重复,就开始下次循环重新录入
if(flag) {
System.out.println("id重复,请您重新录入");
} else {// 为false,不重复,可以录入其他的信息
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(id, name, age, address);
//把学生对象添加到集合中
list.add(s);
}

}

                明天是升班考试,全是基础性内容,估计很综合,我继续敲代码了,新手的道路就是用代码量累计起来的,尤其是当我看了下面这张图