学习资源推荐 https://blog.csdn.net/qq_42813491/article/details/90213353
练习一
A:键盘录入3个学生信息(学号,姓名,居住地)存入集合
B:遍历集合把每一个学生信息存入文本文件
C:每一个学生信息为一行数据,每行学生的学号,姓名和居住地在文件中均以逗号分隔
目录结构
学生实体
package task;
public class Student {
private String id;
private String name;
private String address;
public Student() {
super();
}
public Student(String id, String name, String address) {
super();
this.id = id;
this.name = name;
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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
逻辑和测试
package task;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws Exception {
/*
* A:键盘录入3个学生信息(学号,姓名,居住地)存入集合
* B:遍历集合把每一个学生信息存入文本文件
* C:每一个学生信息为一行数据,每行学生的学号,姓名和居住地在文件中均以逗号分隔
*/
List<Student> list = new ArrayList();// 存放学生信息的集合
// 循环录入学生信息
for (int i = 0; i < 3; i++) {
System.out.println("请输入学生id");
String id = new Scanner(System.in).nextLine();
System.out.println("请输入学生name");
String name = new Scanner(System.in).nextLine();
System.out.println("请输入学生address");
String address = new Scanner(System.in).nextLine();
Student student = new Student(id, name, address);// 填充学生对象
list.add(student);// 将学生对象添加到集合
System.out.println("录入成功" + (i + 1));// 提示录入次数
}
FileWriter fw = new FileWriter("stu.txt");// 等会要写入的文件
for (Student student : list) {
fw.write(student.getId() + "," + student.getName() + "," + student.getAddress());// 分隔符
fw.write("\r\n");// 换行
}
System.out.println("写入完毕");// 提示
fw.close();// 关闭流
}
}
效果图
练习二
把上一案例的stu.txt文本文件中的学生信息读取出来存储到集合中,然后遍历集合,在控制台输出
学生实体类
- 加一个toString,其他的和上边一样
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", address=" + address + "]";
}
逻辑和测试
package task;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) throws Exception {
// 创建输入缓冲流对象,用来读取学生信息
BufferedReader br = new BufferedReader(new FileReader("stu.txt"));
String str = "";// 用来保存读取的数据
List<Student> list = new ArrayList();// 用来存放读取的学生信息
while ((str = br.readLine()) != null) {
String[] student = str.split(",");// 分割学生数组,每一个索引就是一个学生的个人信息
Student s = new Student();// 创建学生实例,填充对象
s.setId(student[0]);
s.setName(student[1]);
s.setAddress(student[2]);
list.add(s);// 将学生数据添加到集合中
}
//遍历集合,打印到控制台,学生实体重写toString()
for (Student student : list) {
System.out.println(student);
}
br.close();// 关闭流
}
}
效果图
练习三
需求:自定义一个专门对数组操作的工具类,具有的功能如下
1,定义一个方法,该方法可以返回数组中最大元素,以int数组为例
2,定义一个方法,该方法根据指定的值去数组中查找是否存在该值
存在,返回该值在数组中的索引,不存在,返回-1 以int,String数组为例,使用重载,使用static关键字
代码
package task;
public class ArrayUtils {
// 需求:自定义一个专门对数组操作的工具类,具有的功能如下
// 1.定义一个方法,该方法可以返回数组中最大元素,以int数组为例
// 2.定义一个方法,该方法根据指定的值去数组中查找是否存在该值
// 存在,返回该值在数组中的索引
// 不存在,返回-1
// 以int,String数组为例,使用重载
// max_array->该方法可以返回数组中最大元素
public static int max_array(int[] array) {
int max = array[0];// 假定0索引的元素值最大
for (int arr : array) {// 遍历整个数组,将大于max的元素赋值给max,遍历结束后返回max
if (max < arr) {
max = arr;
}
}
return max;
}
// 针对int 数组的查找方法
public static int find_array(int[] array, int data) {
for (int i = 0; i < array.length; i++) {// 遍历数组,看看是否有用户传递进来的值
if (array[i] == data) {
return i;// 存在,返回该值在数组中的索引
}
}
return -1;
}
// 重载->针对String 数组的查找方法
public static int find_array(String[] array, String str) {
for (int i = 0; i < array.length; i++) {// 遍历数组,看看是否有用户传递进来的值
if (array[i].equals(str)) {
return i;// 存在,返回该值在数组中的索引
}
}
return -1;
}
}
测试
int[] int_array = { 1, 10, 5, 90, 177 };
String[] str_array = { "冷", "月", "心" };
System.out.println(ArrayUtils.max_array(int_array));// 177
System.out.println(ArrayUtils.find_array(int_array, 70));// -1
System.out.println(ArrayUtils.find_array(int_array, 1));// 0
System.out.println(ArrayUtils.find_array(str_array, "冷"));// 0
System.out.println(ArrayUtils.find_array(str_array, "寒"));// -1