java的第九天

复习回顾

1、String类常用构造方法有哪些?
	String()
    String(char[] arr)
    String(byte[] arr)
    String("字符串常量")
    
    String s = "常量"

2==equals()区别?
==
	基本数据类型: 比较值
	引用类型: 地址比较
    
equals()
    在字符串里面, 比较内容是否相等, 区分大小写
        
        
3、String类的特点?
	内容不可变, 拼接字符串时是创建新的字符串对象


4、StringBuilder的构造方法有哪些?
	StringBuilder()
    StringBuilder(String s)   

5、StringBuilder常用方法有哪些 ?
	append(任意数据)  : 做字符串的拼接
	reverse() : 进行字符串的反转
	length()  : 获取拼接的字符串的长度
    
6、StringBuilder和String类的转换?
StringBuilder--> String
	 StringBuilder 的 toString()方法 ,返回String类型的结果
String--> StringBuilder
	使用StringBuilder的构造方法 : StringBuilder(String s)   

1 ArrayList

1.1 集合的概述
  • 什么是集合

    ​ 集合是java的数据容器,可以动态的存储多种类型的数据。

  • 集合和数组的区别:

    ​ 数组:大小固定,只能存储相同类型的数据。

    ​ 集合:大小可动态扩展,可以存储各种类型的数据。

1.2 ArrayList类概述
  • ArrayList集合的特点

    ​ 底层是数组实现的,长度可以变化。

  • 泛型的使用

    ​ 用于标记和约束集合中存储元素的数据类型。

  • 泛型语法格式 :<引用数据类型>

    ​ ArrayList集合存储字符串数据:ArrayList

    ​ ArrayList集合存储学生类对象:ArrayList

1.3 ArrayList的构造方法和添加方法

构造方法

public ArrayList();  //无参构造方法,表示创建一个空的集合容器

添加集合元素的方法

public boolean add(E e) //向集合中末尾添加元素
    
public void add(int index, E element)  
    //向集合的指定位置index添加元素E,index只能小于或等于集合中元素的个数

案例代码

public class ArrayListDemo{
    public static void main(String[] args){
        //创建集合对象,存储字符串类型数据
        ArrayList<String> list = new ArrayList<>();
        //向集合中添加元素
        list.add("javase");
        list.add("javaee");
        
        //打印集合元素内容
        System.out.println(list);
        
        //向集合指定位置添加元素
        list.add(0,"javaweb"); // 向集合第一个位置添加元素javaweb,原先的元素向后移动
        
        //打印集合元素内容
        System.out.println(list);
    }
}
1.4 ArrayLis常用的方法
public boolean remove(Object o) //删除指定的元素,返回删除是否成功

public E remove(int index) //删除指定索引处的元素,返回被删除的元素
	
public E set(int index,E element) //修改指定索引处的元素,返回被修改的元素

public E get(int  index)   //返回指定索引处的元素

public int  size()  //返回集合中的元素的个数

public boolean add(E e) 	//将指定的元素追加到此集合的末尾

public void  add(int index,E   element) //在此集合中的指定位置插入指定的元素

案例代码

/*
    ArrayList常用方法
*/
public class ArrayListDemo {
    public static void main(String[] args) {
        //创建集合
        ArrayList<String> list = new ArrayList<>();

        //添加元素
        list.add("hello");
        list.add("world");
        list.add("java");

        //public boolean remove(Object o):删除指定的元素,返回删除是否成功
//        System.out.println(list.remove("world"));
//        System.out.println(list.remove("javaee"));

        //public E remove(int index):删除指定索引处的元素,返回被删除的元素
//        System.out.println(list.remove(1));

        //IndexOutOfBoundsException
//        System.out.println(list.remove(3));

        //public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
//        System.out.println(list.set(1,"javaee"));

        //IndexOutOfBoundsException
//        System.out.println(list.set(3,"javaee"));

        //public E get(int index):返回指定索引处的元素
//        System.out.println(list.get(0));
//        System.out.println(list.get(1));
//        System.out.println(list.get(2));
        //IndexOutOfBoundsException
//        System.out.println(list.get(3));

        //public int size():返回集合中的元素的个数
        System.out.println(list.size());

        //输出集合
        System.out.println("list:" + list);
    }
}
1.5 ArrayList存储字符串并遍历

需求:

​ 创建一个存储字符串的集合,存储多个字符串元素,并使用for循环完成集合的遍历。

案例代码:

/*
    步骤:
        1. 创建集合对象 :ArrayList<String> list = new ArrayList<>();
        2. 使用add(元素值)方法添加元素。
        3. for循环遍历集合,通过size()方法获取循环次数。
        4. 循环内通过get(int index)方法获取元素。
 */
public class ArrayLisDemo2 {
    public static void main(String[] args) {
        // 1. 创建集合对象
        ArrayList<String> list = new ArrayList<>();

        // 2. 往集合中添加字符串对象
        list.add("java");
        list.add("javase");
        list.add("javaee");

        // 3. for循环遍历集合
        for(int i=0; i<list.size(); i++) {
            // 4. 遍历每个索引对应的集合元素
            String s = list.get(i);
            System.out.println(s);
        }
    }
}
1.6 ArrayList存储学生对象并遍历

需求:

​ 创建一个存储学生对象的集合,存储3个学生对象,并实现遍历打印。

步骤:

  1. 定义一个学生类Student,使其具有姓名、年龄等属性。
  2. 创建3个学生对象。
  3. 创建ArrayList集合对象,泛型类型为Student。
  4. 将学生对象添加到集合中。
  5. 遍历集合,获取每一个学生对象并输出对应的姓名和年龄。

案例代码:

//学生类对象
public class Student {
    private String name;
    private int age;

    public Student() {}
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

//测试类
public class ArrayListDemo3 {
	public static void main(String[] args) {
		//1、创建集合对象
		ArrayList<Student> list = new ArrayList<>();
		
		//2、创建学生元素对象
		Student s1 = new Student("张三",20);
		Student s2 = new Student("李四",25);
		Student s3 = new Student("王五",22);
		
		//3、往集合添加元素
		list.add(s1);
		list.add(s2);
		list.add(s3);
		
		//4、遍历元素对象
		for (int i = 0; i < list.size(); i++) {
            Student s = list.get(i);
            System.out.println(s.getName() + ":" + s.getAge());
        }
	}
}
1.7 ArrayList存储学生对象并遍历升级版

需求:

​ 通过键盘录入数据为学生对象赋值。

​ 将学生对象添加到集合中。

​ 遍历集合。

案例代码:

/*
    步骤:
        1. 定义学生类。(使用之前定义的Student类即可)
        2. 创建集合对象。
        3. 创建学生对象,键盘录入学生对象所需要的数据。
        4. 往集合中添加学生对象。
        5. 遍历集合,获取每一个学生对象,并打印学生信息。
 */
public class ArrayListTest {
    public static void main(String[] args) {
        //创建集合对象
       ArrayList<Student> list = new ArrayList<>();

        //调用方法,往集合中添加学生对象
        addStudent(list);
        addStudent(list);
        addStudent(list);

        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            Student s = list.get(i);
            System.out.println(s.getName() + " : " + s.getAge());
        }
    }

    /*
        两个明确:
            返回值类型:void
            参数:ArrayList<Student> list
     */
    public static void addStudent(ArrayList<Student> list) {
        ArrayList<Student> list = new ArrayList<>();
        //键盘录入学生对象所需要的数据
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生姓名:");
        String name = sc.nextLine();
        System.out.println("请输入学生年龄:");
        int age = sc.nextInt();

        //创建学生对象,并设置成员变量的值。
        Student s = new Student();
        s.setName(name);
        s.setAge(age);

        //往集合中添加学生对象
        list.add(s);
    }
}

2 学生管理系统

2.1 需求分析

  • 案例需求

    ​ 针对目前我们的所学内容,完成一个综合案例:学生管理系统。该系统主要功能如下:

    ​ 添加学生:通过键盘录入学生信息,添加到集合中

    ​ 删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除

    ​ 修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改

    ​ 查看学生:将集合中的学生对象信息进行展示

    ​ 退出系统:结束程序

  • 实现步骤

    1. 定义学生类,包含以下成员变量

      ​ private String sid // 学生id

      ​ private String name // 学生姓名

      ​ private String age // 学生年龄

      ​ private String address // 学生所在地

    2. 学生管理系统主界面的搭建步骤

      2.1 用输出语句完成主界面的编写
      2.2 用Scanner实现键盘输入
      2.3 用switch语句完成选择的功能
      2.4 用循环完成功能结束后再次回到主界面

    3. 学生管理系统的添加学生功能实现步骤

      3.1 定义一个方法,接收ArrayList集合
      3.2 方法内完成添加学生的功能
      ​ ①键盘录入学生信息
      ​ ②根据录入的信息创建学生对象
      ​ ③将学生对象添加到集合中
      ​ ④提示添加成功信息
      3.3 在添加学生的选项里调用添加学生的方法

    4. 学生管理系统的查看学生功能实现步骤

      4.1 定义一个方法,接收ArrayList集合
      4.2 方法内遍历集合,将学生信息进行输出
      4.3 在查看所有学生选项里调用查看学生方法

    5. 学生管理系统的删除学生功能实现步骤

      5.1 定义一个方法,接收ArrayList集合
      5.2 方法中接收要删除学生的学号
      5.3 遍历集合,获取每个学生对象
      5.4 使用学生对象的学号和录入的要删除的学号进行比较,如果相同,则将当前学生对象从集合中删除
      5.5 在删除学生选项里调用删除学生的方法

    6. 学生管理系统的修改学生功能实现步骤

      6.1 定义一个方法,接收ArrayList集合
      6.2 方法中接收要修改学生的学号
      6.3 通过键盘录入学生对象所需的信息,并创建对象
      6.4 遍历集合,获取每一个学生对象。并和录入的修改学生学号进行比较.如果相同,则使用新学生对象替换当前学生对象
      6.5 在修改学生选项里调用修改学生的方法

    7. 退出系统

      使用==System.exit(0)==退出JVM

2.2 需求实现

2.2.1 学生类的定义
/*
	学生类的成员变量(属性):
	学号 sid
	姓名 name
	年龄 age
	居住地 address
	
	注意:为了录入信息方便,年龄也采用String类型
*/
public class Student {
    //学号
    private String sid;
    //姓名
    private String name;
    //年龄
    private String age;
    //居住地
    private String address;
	//无参构造方法
    public Student() {}
	
    //满参构造方法
    public Student(String sid, String name, String age, String address) {
        this.sid = sid;
        this.name = name;
        this.age = age;
        this.address = address;
    }
	
    //---------getter和setter方法---------
    public String getSid() {
        return sid;
    }

    public void setSid(String sid) {
        this.sid = sid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}
2.2.2 主界面的搭建

步骤:

​ 1.用输出语句完成主界面的编写。

​ 2.用Scanner实现键盘输入。

​ 3.用switch语句完成选择的功能。

​ 4.用循环实现操作完成后再次回到主界面。

效果图:

[外链图片转存失败(img-PwN7sXKr-1563073393691)(assets/1561225756760.png)]

实现代码:

/*
    学生管理系统实现步骤:
        1、主界面的搭建。
        2、定义添加学生信息的方法。

*/
public class StudentManager {
    
    public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
        //-----------------主界面的搭建开始----------------
       while (true) {
            //1. 用输出语句完成主界面的编写。
            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("请输入你的选择:");

            //2. 用Scanner实现键盘录入数据。
            //Scanner sc = new Scanner(System.in);
            String line = sc.nextLine();

            //3. 用switch语句完成操作的选择。
            switch (line) {
                case "1":
                    System.out.println("添加学生");
                    break;
                case "2":
                    System.out.println("删除学生");
                    break;
                case "3":
                    System.out.println("修改学生");
                    break;
                case "4":
                    System.out.println("查看所有学生");
                    break;
                case "5":
                    System.out.println("谢谢使用");
                    System.exit(0); //JVM退出
            }
        }
        //-----------------主界面的搭建完成----------------
    }
    
}
2.2.3 添加学生信息

需求分析:

​ 1.定义一个方法addStudent,接收ArrayList集合

​ 2.方法内完成添加学生的功能

​ ①键盘录入学生信息

​ ②根据录入的信息创建学生对象

​ ③将学生对象添加到集合中

​ ④提示添加成功信息

​ 3.在添加学生的选项里调用添加学生的方法

效果图:

[外链图片转存失败(img-gXSeOvrb-1563073393692)(assets/1561226533718.png)]

代码实现:

/*
	定义一个方法,用于添加学生信息
*/
public static void addStudent(ArrayList<Student> array) {   
    //创建键盘录入对象
    Scanner sc = new Scanner(System.in);  
	//录入学生对象信息
    System.out.println("请输入学生学号:");
    String sid = sc.nextLine();
    
    //判断sid是否在集合中已经存在, 如果存在, 提示用户重新输入
    
    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.setSid(sid);
    s.setName(name);
    s.setAge(age);
    s.setAddress(address);
    
    //创建学生对象,并为成员变量赋值(方式2)
    //Student s = new Student(sid,name,age,address);

    //将学生对象添加到集合中
    array.add(s);

    //给出添加成功提示
    System.out.println("添加学生成功");
}
2.2.4 查看所有学生信息

实现步骤:

​ 1.定义一个方法,接收ArrayList集合。

​ 2.方法内遍历集合,将学生信息进行输出。

​ 3.在查看所有学生选项里调用查看学生方法。

实现代码:

 //定义一个方法,用于查看学生信息
public static void findAllStudent(ArrayList<Student> list) {
    
    //判断集合中是否有数据,如果没有显示提示信息
    if (list==null || list.size() == 0) {
        System.out.println("无信息,请先添加信息再查询");
        //方法结束
        return;
    }
    
    //显示表头信息
    //\t其实是一个tab键的位置
    System.out.println("学号\t\t姓名\t\t年龄\t\t居住地");

    //将集合中数据取出,按表头格式对应输出
    for (int i = 0; i < list.size(); i++) {
        Student s = list.get(i);
        System.out.println(s.getSid() + "\t\t" + s.getName() + "\t\t" + s.getAge() + "岁\t\t" + s.getAddress());
    }
}
2.2.5 删除学生信息

需求:

​ 根据学生学号删除对应的学生信息。

步骤:

​ 1.定义一个方法,接收ArrayList集合,以及要删除的学生学号。

​ 2.遍历集合,获取每个学生对象。

​ 3.将集合中的学生学号和传递进方法的要删除的学号进行比较,

​ 如果相同,则将当前学生对象从集合中删除

​ 4.在删除学生选项里调用删除学生的方法。

代码实现:

//定义一个方法,用于删除学生信息
public static void deleteStudent(ArrayList<Student> array) {
    //键盘录入要删除的学生学号,显示提示信息
    Scanner sc = new Scanner(System.in);

    System.out.println("请输入你要删除的学生的学号:");
    String sid = sc.nextLine();
    
	//遍历删除
    for (int i = 0; i < array.size(); i++) {
        Student s = array.get(i);
        //根据学号找到需要删除的学生对象
        if (s.getSid().equals(sid)) {
           // array.remove(s);
            array.remove(i);
            
            break;
        }
    }
    
    System.out.println("删除学生成功");
}
2.2.6 修改学生信息

需求:

​ 1.定义一个方法,接收ArrayList集合类型的参数。

​ 2.方法中录入要修改学生的学号。

​ 3.通过键盘录入需要修改的学生信息,并创建对象。

​ 4.遍历集合,获取每一个学生对象。并和需要修改的学生学号进行比较,

​ 如果相同,则使用新学生对象替换当前学生对象。

​ 5.在修改学生选项里调用修改学生的方法。

代码实现:

//定义修改学生信息的方法。
public static void updateStudent(ArrayList<Student> array) {
    //键盘录入要修改的学生学号,显示提示信息
    Scanner sc = new Scanner(System.in);

    System.out.println("请输入你要修改的学生的学号:");
    String sid = sc.nextLine();

    //键盘录入要修改的学生信息
    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.setSid(sid);
    s.setName(name);
    s.setAge(age);
    s.setAddress(address);

    //遍历集合修改对应的学生信息
    for (int i = 0; i < array.size(); i++) {
        Student student = array.get(i);
        if (student.getSid().equals(sid)) {
            array.set(i, s);
        }
    }
    //给出修改成功提示
    System.out.println("修改学生成功");
}
2.2.7 解决学号不存在问题

​ 在进行删除或修改学生信息的时候, 因为是根据学号操作的, 所以需要先判断用户输入的学号是否存在, 如果存在再进行操作, 不存在时需要提示用户重新输入一个存在的学号.

优化代码:

修改的方法:

//定义修改学生信息的方法。
public static void updateStudent(ArrayList<Student> array) {
    //键盘录入要修改的学生学号,显示提示信息
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入你要修改的学生的学号:");
    String sid = sc.nextLine();
    
    //假设sid不存在
    boolean noSid = true;

    //遍历集合修改对应的学生信息
    for (int i = 0; i < array.size(); i++) {
        Student s = array.get(i);
        
        if (s.getSid().equals(sid)) {

            //键盘录入要修改的学生信息
            System.out.println("请输入学生新姓名:");
            String name = sc.nextLine();
            System.out.println("请输入学生新年龄:");
            String age = sc.nextLine();
            System.out.println("请输入学生新居住地:");
            String address = sc.nextLine();
			
            s.setSid(sid);
            s.setName(name);
            s.setAge(age);
            s.setAddress(address);
            
            //给出修改成功提示
            System.out.println("修改学生成功");
            noSid = false;
            break;
        }
    }
    //如果输入的sid不存在,提示用户重新输入
    if(noSid){
        System.out.println("你输入的学号不存在,请重新输入!");
    }
}

删除的方法:

//定义一个方法,用于删除学生信息
public static void deleteStudent(ArrayList<Student> array) {
    //键盘录入要删除的学生学号,显示提示信息
    Scanner sc = new Scanner(System.in);

    System.out.println("请输入你要删除的学生的学号:");
    String sid = sc.nextLine();

    //在删除/修改学生操作前,对学号是否存在进行判断
    //如果不存在,显示提示信息
    //如果存在,执行删除/修改操作

    //假设sid不存在
    boolean noSid = true;

    for (int i = 0; i < array.size(); i++) {
        Student s = array.get(i);
        if (s.getSid().equals(sid)) {
            array.remove(s);
            System.out.println("删除学生成功");
            noSid = false;
            break;
        }
    }

    if (noSid) {
        System.out.println("该信息不存在,请重新输入");
    } 
}
2.2.8 解决学号重复问题

解决学生新增时, 学号重复添加的问题.

程序代码优化:

​ 1.定义一个方法,接收ArrayList集合参数、输入的学号参数。

​ 2.方法中遍历集合,判断学号是否已经存在,返回对应的布尔值,存在返回true,不存在返回false。

​ 3.在添加学生方法中,调用判断学号是否存在的方法。

​ 4.对返回的布尔值进行判断

​ 如果学号存在,通过循环实现继续输入学号。

​ 如果学号不存在,录入当前学号,继续输入其他学生信息。

代码实现:

//定义一个方法,判断学号是否被使用
public static boolean isUsed(ArrayList<Student> array, String sid) {
    //如果键盘录入的学号已经存在,返回true,否则返回false
    boolean flag = false;

    for(int i=0; i<array.size(); i++) {
        Student s = array.get(i);
        if(s.getSid().equals(sid)) {
            flag = true;
            break;
        }
    }

    return flag;
}
2.2.9 学生管理系统完整代码
  • 学生类Student参照上面学生类的定义代码。
  • 学生系统管理类StudentManager代码如下。
/*
    学生管理系统实现步骤:
        1、主界面的搭建。
        2、定义添加学生信息的方法。
        3、定义查看学生信息的方法。
        4、定义删除学生信息的方法。
        5、定义修改学生信息的方法。

*/
public class StudentManager {
    
    public static void main(String[] args) {
        
        //创建集合存储学习对象信息
        ArrayList<Student> list = new ArrayList<>();
        
        //-----------------1. 主界面的搭建开始----------------
        while (true) {
            //1. 用输出语句完成主界面的编写。
            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("请输入你的选择:");

            //2. 用Scanner实现键盘录入数据。
            Scanner sc = new Scanner(System.in);
            String line = sc.nextLine();

            //3. 用switch语句完成操作的选择。
            switch (line) {
                case "1": //添加
                    addStudent(list);
                    //System.out.println("添加学生");
                    break;
                case "2": //删除
                    deleteStudent(list);
                    //System.out.println("删除学生");
                    break;
                case "3": //修改
                    updateStudent(list);
                   //System.out.println("修改学生");
                    break;
                case "4": //查看
                    findAllStudent(list);
                    //System.out.println("查看所有学生");
                    break;
                case "5": //退出
                    System.out.println("谢谢使用");
                    System.exit(0); //JVM退出
            }
        }
        //-----------------主界面的搭建完成----------------
    }
    
    /*
        2. 定义添加学生信息的方法。
    */
    public static void addStudent(ArrayList<Student> array) {

        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        
		//定义学生学号
         String sid = "";
        
		//判断学号是否重复,如果重复重新录入
        while (true) {
            System.out.println("请输入学生学号:");
            sid = sc.nextLine();

            boolean flag = isUsed(array, sid); //如果返回true, 表示学号重复
            if (flag) {
                System.out.println("你输入的学号已经被占用,请重新输入");
            } else {
                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();
        s.setSid(sid);
        s.setName(name);
        s.setAge(age);
        s.setAddress(address);

        //将学生对象添加到集合中
        array.add(s);

        //给出添加成功提示
        System.out.println("添加学生成功");
    }
    
    /*
    	3. 定义查看学生信息的方法。
    */
    public static void findAllStudent(ArrayList<Student> list) {
        //判断集合中是否有数据,如果没有显示提示信息
        if (list==null || list.size() == 0) {
            System.out.println("无信息,请先添加信息再查询");
            //方法结束
            return;
        }

        //显示表头信息
        //\t其实是一个tab键的位置
        System.out.println("学号\t\t姓名\t\t年龄\t\t居住地");

        //将集合中数据取出,按表头格式对应输出
        for (int i = 0; i < list.size(); i++) {
            Student s = list.get(i);
            System.out.println(s.getSid() + "\t\t" 
                               + s.getName() + "\t"
                               + s.getAge() + "岁\t\t" 
                               + s.getAddress());
        }
    }
    
    
    /*
    	4. 定义删除学生信息的方法。
    */
    public static void deleteStudent(ArrayList<Student> array) {
        //键盘录入要删除的学生学号,显示提示信息
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入你要删除的学生的学号:");
        String sid = sc.nextLine();

        //在删除/修改学生操作前,对学号是否存在进行判断
        //如果不存在,显示提示信息
        //如果存在,执行删除/修改操作

        //假设sid不存在
        boolean noSid = true;

        for (int i = 0; i < array.size(); i++) {
            Student s = array.get(i);
            if (s.getSid().equals(sid)) {
                array.remove(s);
                System.out.println("删除学生成功");
                noSid = false;
                break;
            }
        }

        if (noSid) {
            System.out.println("该信息不存在,请重新输入");
        } 
    }
    
    
    /*
    	5. 定义修改学生信息的方法。
    */
    public static void updateStudent(ArrayList<Student> array) {
        //键盘录入要修改的学生学号,显示提示信息
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入你要修改的学生的学号:");
        String sid = sc.nextLine();
        
        //假设sid不存在
        boolean noSid = true;

        //遍历集合修改对应的学生信息
        for (int i = 0; i < array.size(); i++) {
            Student s = array.get(i);
            if (s.getSid().equals(sid)) {

                //键盘录入要修改的学生信息
                System.out.println("请输入学生新姓名:");
                String name = sc.nextLine();
                System.out.println("请输入学生新年龄:");
                String age = sc.nextLine();
                System.out.println("请输入学生新居住地:");
                String address = sc.nextLine();

                s.setSid(sid);
                s.setName(name);
                s.setAge(age);
                s.setAddress(address);
                //给出修改成功提示
                System.out.println("修改学生成功");
                noSid = false;
                break;
            }
        }
        if(noSid){
            System.out.println("你输入的学号不存在,请重新输入!");
        }
    }

    
    /*
    	6. 定义方法判断学号是否重复。
    */
    public static boolean isUsed(ArrayList<Student> array, String sid) {
        //如果键盘录入的学号已经存在,返回true,否则返回false
        boolean flag = false;

        for(int i=0; i<array.size(); i++) {
            Student s = array.get(i);
            if(s.getSid().equals(sid)) {
                flag = true;
                break;
            }
        }

        return flag;
    }
    
}

总结

集合和数组的区别
	数组 : 长度固定, 存储的数据类型一致 int[] String[]
	集合 : 长度可变 , 可以同时存储多种数据类型 

泛型语法
	格式: <引用类型>
	作用: 标记和限制集合中存储的数据类型

ArrayList集合创建对象
	ArrayList<数据类型> list = new ArrayList<>();

ArrayList常用方法
添加集合元素
	public boolean add(E element);  //往集合末尾添加元素
	public boolean add(int index, E element); //往集合中的index位置添加元素
	//index 从0~集合长度

删除集合元素
	public boolean remove(Object o) // 根据集合元素删除对应的元素
	public E remove(int index) //根据集合索引删除元素, 返回被删的元素

修改集合元素
	public E set(int index, E element) //根据索引修改指定位置的元素, 返回被修改的元素

查询集合元素
	public E get(int index); //根据索引查找对应的元素

获取集合中元素的个数
	public int size(); //返回集合中元素的个数
	
结合for循环, 进行集合的遍历
for(int i=0 ;i<list.size(); i++){
	System.out.println(list.get(i));
}


需要完成的课堂代码:
    完成ArrayList集合添加字符串并遍历
    完成ArrayList集合添加学生对象并遍历

    完成学生管理系统主界面编写
    完成学生管理系统添加操作
    	注意学号不能重复
    	
    完成学生管理系统查询操作
    	查不到数据时, 要提示用户先录入信息, 再查询
    	
    完成学生管理系统删除操作
    	注意当学号不存在时, 提示用户
    	
    完成学生管理系统修改操作
    	注意当学号不存在时, 提示用户

s.getSid().equals(sid)) {
flag = true;
break;
}
}

    return flag;
}

}


### 总结

```java
集合和数组的区别
	数组 : 长度固定, 存储的数据类型一致 int[] String[]
	集合 : 长度可变 , 可以同时存储多种数据类型 

泛型语法
	格式: <引用类型>
	作用: 标记和限制集合中存储的数据类型

ArrayList集合创建对象
	ArrayList<数据类型> list = new ArrayList<>();

ArrayList常用方法
添加集合元素
	public boolean add(E element);  //往集合末尾添加元素
	public boolean add(int index, E element); //往集合中的index位置添加元素
	//index 从0~集合长度

删除集合元素
	public boolean remove(Object o) // 根据集合元素删除对应的元素
	public E remove(int index) //根据集合索引删除元素, 返回被删的元素

修改集合元素
	public E set(int index, E element) //根据索引修改指定位置的元素, 返回被修改的元素

查询集合元素
	public E get(int index); //根据索引查找对应的元素

获取集合中元素的个数
	public int size(); //返回集合中元素的个数
	
结合for循环, 进行集合的遍历
for(int i=0 ;i<list.size(); i++){
	System.out.println(list.get(i));
}


需要完成的课堂代码:
    完成ArrayList集合添加字符串并遍历
    完成ArrayList集合添加学生对象并遍历

    完成学生管理系统主界面编写
    完成学生管理系统添加操作
    	注意学号不能重复
    	
    完成学生管理系统查询操作
    	查不到数据时, 要提示用户先录入信息, 再查询
    	
    完成学生管理系统删除操作
    	注意当学号不存在时, 提示用户
    	
    完成学生管理系统修改操作
    	注意当学号不存在时, 提示用户
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值