集合和数组的对比
集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以改变。
集合和数组的区别:
共同点:都是存储数据的容器
不同点:数组的容量是固定的,集合的容量是可变的
ArrayList集合
ArrayList
可调整大小的数组实现
是一种特殊的数据类型,泛型
在出现E的地方我们使用引用数据类型替换即可
ArrayList,ArrayList
ArrayList集合的常用方法
获取元素
for(int i = 0; i < 集合对象.size(); i++) {
集合对象.get(i) 就是指定索引处的元素
}
遍历集合
for(int i = 0; i < 数组.length; i++) {
数组名[索引];
}
学生管理系统
package com.java.stage2.lesson9;
import java.util.ArrayList;
import java.util.Scanner;
/**
* @author lesous
* @date 2023/03/30
* <p>
* 简单的学生管理系统
*/
public class StudentManageSystem {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Student> studentArrayList = new ArrayList<>();
StudentManageSystem studentManageSystem = new StudentManageSystem();
while (true) {
studentManageSystem.menu();
int id = studentArrayList.size() + 1;
int select = scanner.nextInt();
Student tmp = new Student();
int tmpid = 0;
switch (select) {
case 1:
System.out.println("请输入学生的 姓名,年龄,出生日期");
String name = studentManageSystem.inputname();
int age = studentManageSystem.inputage();
String birthday = studentManageSystem.inputbirthday();
Student student = new Student(id, name, age, birthday);
studentArrayList.add(student);
System.out.println("添加成功");
break;
case 2:
System.out.println("请输入要删除学生的学号");
tmpid = scanner.nextInt();
if (studentArrayList.size() >= tmpid) {
for (int i = 0; i < studentArrayList.size(); i++) {
tmp = studentArrayList.get(i);
if (tmp.getId() == tmpid) {
studentArrayList.remove(i);
}
}
System.out.println("删除成功");
break;
} else {
System.out.println("没有该学生,请重新选择功能");
break;
}
case 3:
System.out.println("请输入要修改学生的学号");
tmpid = scanner.nextInt();
if (studentArrayList.size() >= tmpid) {
for (int i = 0; i < studentArrayList.size(); i++) {
tmp = studentArrayList.get(i);
if (tmp.getId() == tmpid) {
tmp.setName(studentManageSystem.inputname());
tmp.setAge(studentManageSystem.inputage());
tmp.setBirthday(studentManageSystem.inputbirthday());
}
}
} else {
System.out.println("没有该学生,请重新选择功能");
break;
}
case 4:
if (studentArrayList.size() != 0) {
for (int i = 0; i < studentArrayList.size(); i++) {
tmp = studentArrayList.get(i);
outputstudent(tmp);
System.out.println("***");
}
break;
} else {
System.out.println("系统中没有学生,请重新选择功能");
break;
}
case 5:
System.out.println("请输入要查看的学生学号");
tmpid = scanner.nextInt();
for (int i = 0; i < studentArrayList.size(); i++) {
tmp = studentArrayList.get(i);
if (tmp.getId() == tmpid) {
outputstudent(tmp);
break;
}
}
break;
case 6:
return;
default:
System.out.println("输入有误,请选择功能");
break;
}
}
}
private static void outputstudent(Student tmp) {
System.out.println("学生的名字为:" + tmp.getName());
System.out.println("学生的学号为:" + tmp.getId());
System.out.println("学生的年龄为:" + tmp.getAge());
System.out.println("学生的出生日期为:" + tmp.getBirthday());
}
public void menu() {
System.out.println("--------欢迎来到学生管理系统--------");
System.out.println("| 1 添 加 学 生 |");
System.out.println("| 2 删 除 学 生 |");
System.out.println("| 3 修 改 学 生 |");
System.out.println("| 4 查看所有学生 |");
System.out.println("| 5 查 询 学 生 |");
System.out.println("| 6 退 出 系 统 |");
System.out.println("-------请输入数字选择需要的功能------");
}
public String inputname() {
System.out.println("请输入名字");
Scanner scanner = new Scanner(System.in);
String name = scanner.next();
return name;
}
public int inputage() {
int age = 0;
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入年龄");
String tmps = scanner.next();
int[] tmpi = new int[3];
lo:
while (tmps.length()<4) {
for (int i = 0; i < tmps.length(); i++) {
if (tmps.charAt(i) >= 48 && tmps.charAt(i) <= 57) {
tmpi[i] = tmps.charAt(i)-48;
}
else{
break lo;
}
}
age = tmpi[0] * 10 + tmpi[1];
return age;
}
System.out.println("年龄有误");
}
}
public String inputbirthday() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请以”xxxx-xx-xx“的形式输入出生日期");
String birthday = scanner.next();
lo:
while (birthday.length() == 10) {
for (int i = 0; i < 10; i++) {
if (i == 4 || i == 7) {
if (birthday.charAt(i) != '-') {
break lo;
}
} else if (birthday.charAt(i) < 48 || birthday.charAt(i) > 57) {
break lo;
}
}
return birthday;
}
System.out.println("格式错误请重新输入");
}
}
}