Java学习笔记2024/2/21

题目1

现有如下字符串元素:["aaa", "bbb", "aaa", "aaa", "ccc", "bbb"],请将所有的元素按顺序存入ArrayList集合中,并遍历集合查看存储结果。

训练目标

ArrayList集合存储字符串元素,并遍历。

训练提示

1、创建ArrayList集合,泛型如何定义?

2、怎样将数据添加到集合中?

3、怎样遍历集合?

训练步骤

1、创建ArrayList集合对象,泛型声明为String类型

2、调用集合的add方法,将元素依次存入集合

3、遍历集合

3.1、定义循环,索引从0到集合的size-1

3.2、通过ArrayList集合的get方法,依次获取索引上的元素

参考答案

package test;
​
import java.util.ArrayList;
​
public class test1 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("aaa");
        list.add("aaa");
        list.add("ccc");
        list.add("bbb");
​
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            System.out.println(s);
        }
        System.out.println(list);
    }
    
}
​

题目2

请定义教师(Teacher)类,属性包含姓名和专业名称。将若干教师对象存入ArrayList集合中,并遍历集合打印教师信息,格式如下:

姓名:赵老师, 专业:javase
姓名:钱老师, 专业:javaee
姓名:孙老师, 专业:php
姓名:李老师, 专业:python

训练目标

ArrayList集合存储自定义对象,并遍历。

训练提示

1、怎样定义一个描述教师信息的类?

2、需要将教师对象存入集合,创建集合对象,泛型该怎样定义?

3、怎样将数据添加到集合中?

4、怎样遍历ArrayList集合?输出信息时,直接打印对象名称可以吗?怎样才能按照题目要求格式输出信息?

训练步骤

1、新建Teacher类,成员变量为String类型的name和course,私有修饰,提供构造方法,提供get和set方法。

2、创建ArrayList集合对象,泛型声明为Teacher类型

3、创建若干Teacher对象,可以使用构造方法为成员变量赋值,调用集合的add方法,将元素依次存入集合。

4、遍历集合

3.1、定义循环,索引从0到集合的size-1。

3.2、通过ArrayList集合的get方法,依次获取索引上的元素。

3.3、通过Teacher对象的get方法,获取属性值,拼接成要求的格式输出。

参考答案

package test.test1_1;
​
public class Teacher {
    private String name;
    private String specialized;
​
    public Teacher() {
    }
​
    public Teacher(String name, String specialized) {
        this.name = name;
        this.specialized = specialized;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public String getSpecialized() {
        return specialized;
    }
​
    public void setSpecialized(String specialized) {
        this.specialized = specialized;
    }
}
​
package test.test1_1;
​
import java.util.ArrayList;
​
public class test2 {
    public static void main(String[] args) {
        ArrayList<Teacher> list = new ArrayList<>();
​
        Teacher t1 = new Teacher("赵老师", "javase");
        Teacher t2 = new Teacher("钱老师", "javaee");
        Teacher t3 = new Teacher("孙老师", "php");
        Teacher t4 = new Teacher("李老师", "python");
​
        //要存对象就对象类型,要存字符串就字符串类型
        list.add(t1);
        list.add(t2);
        list.add(t3);
        list.add(t4);
​
        for (int i = 0; i < list.size(); i++) {
            Teacher t = list.get(i);
            System.out.println("姓名:" + t.getName() + ", 专业:" + t.getSpecialized());
        }
    }
}

题目3

有如下员工信息:

姓名:张三,工资:3000
姓名:李四,工资:3500
姓名:王五,工资:4000
姓名:赵六,工资:4500
姓名:田七,工资:5000

先需要将所有的员工信息都存入ArrayList集合中,并完成如下操作:

1、判断是否有姓名为“王五”的员工,如果有,改名为“王小五”

2、判断是否有姓名为“赵六”的员工,如果有,将其删除

3、给姓名为“田七”的员工,涨500工资

训练目标

ArrayList集合的修改元素和删除元素API

训练提示

1、需要定义员工类,将员工信息进行封装

2、创建ArrayList集合,创建员工对象,将所有员工对象存入集合

3、需要判断集合中元素的信息,那么肯定需要遍历集合获取到所有元素

4、ArrayList集合中,修改元素和删除元素的方法是什么?在遍历集合时,删除了集合中的元素,会不会对遍历产生影响呢?如果会,该怎么解决?

训练步骤

1、定义员工类Worker,私有属性name和salary,分别为String和int类型,表示姓名和工资,提供构造、get、set方法

2、创建ArrayList集合,泛型为Worker类型,创建员工对象,将所有员工对象存入集合

3、使用for循环遍历集合,获取到每一个元素。

3.1、判断元素的name属性,如果符合条件,作出相应的修改或者删除。

3.2、遍历时如果删除元素,后面的元素会往前走,索引再加1就会有元素遗漏,所以删除后遍历索引要相应的减1,防止有元素遍历不到。

参考答案

package test.test1_2;
​
public class Worker {
    private String name;
    private int salary;
​
    public Worker() {
    }
​
    public Worker(String name, int salary) {
        this.name = name;
        this.salary = salary;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public int getSalary() {
        return salary;
    }
​
    public void setSalary(int salary) {
        this.salary = salary;
    }
}
​
package test.test1_2;
​
import java.util.ArrayList;
​
public class test3 {
    public static void main(String[] args) {
        ArrayList<Worker> list = new ArrayList<>();
        Worker w1 = new Worker("张三", 3000);
        Worker w2 = new Worker("李四", 3500);
        Worker w3 = new Worker("王五", 4000);
        Worker w4 = new Worker("赵六", 4500);
        Worker w5 = new Worker("田七", 5000);
​
        list.add(w1);
        list.add(w2);
        list.add(w3);
        list.add(w4);
        list.add(w5);
​
        for (int i = 0; i < list.size(); i++) {
            Worker w = list.get(i);
            if (w.getName() == "王五") {
                w.setName("王小五");
            }
            if (w.getName() == "赵六") {
                list.remove(i);
                i--;
            }
            if (w.getName() == "田七") {
                int re = w.getSalary() + 500;
                w.setSalary(re);
            }
​
        }
​
        for (int i = 0; i < list.size(); i++) {
            System.out.println("姓名:" + list.get(i).getName() + ",工资:" + list.get(i).getSalary());
        }
​
    }
}

题目4(综合)

利用面向对象的思想设计一个图书管理系统。图书的属性有:编号,书名,作者,价格。要求提供如下功能:

1、提供操作菜单,可以选择要进行的操作。

2、可以添加图书,添加图书时,编号需要唯一,添加成功,返回到菜单。

3、可以查询图书,显示所有图书信息,然后返回到菜单。

4、可以根据书名,查询单本图书信息,显示信息后,返回到菜单。

5、可以删除图书,通过编号删除,删除成功后,返回到菜单。

6、可以修改图书的信息,但编号不可以修改,修改成功后,返回到菜单。

7、可以退出系统,结束程序运行。

提示:

1、所有图书信息由键盘录入

2、图书的价格可以定义为字符串类型,因为在键盘录入时,不可以先使用nextInt()方法获取整数然后再使用next()方法获取字符串,这样会导致next()方法获取不到数据。

训练目标

ArrayList集合API的综合运用、编程逻辑的锻炼

训练提示

1、首先需要创建一个图书类,封装图书信息。

2、提供操作菜单,可以通过键盘录入不同的数字来表示不同的操作,选择结构语句可以实现该需求。

3、管理图书,需要将图书存放起来,首先需要创建集合容器。

4、添加图书,即将图书存入集合中,但存入之前需要判定编号的唯一性,如果编号存在,需要重新录入。

5、查询所有图书,即为遍历集合显示信息。

6、查询单本图书,需要录入图书名称,遍历集合进行查询。

7、修改图书信息,需要根据编号先找到该图书,修改其除了编号之外的信息,存入集合覆盖原来的信息。

8、删除图书信息,需要根据编号先找到该图书,根据索引直接删除即可。

9、退出系统功能,借助结束程序的API实现即可。

训练步骤

1、创建Book类,属性String类型的id,name,author,price。提供构造方法、get和set方法。

2、创建测试类Test04,在main方法中,创建键盘录入对象,创建ArrayList集合对象用于存储图书。

3、使用输出语句定义一个操作菜单,包含添加、查看全部、查看单个、修改、查询、退出功能,使用switch语句对键盘录入的菜单项进行判断。

4、定义方法实现判断id是否已经存在。方法返回值boolean类型,参数列表为集合ArrayList和要查找的id字符串。遍历集合,判断id是否与集合中的Book对象的id相同,如果有相同,返回true,否则返回false

5、定义方法实现添加功能。方法返回值void,参数列表为集合ArrayList。在方法中,先使用键盘录入获取用户录入的id信息,调用方法判断id是否存在,如果存在,重新录入,如果不存在,再依次获取图书的其他信息,创建图书对象,并将图书对象存入集合中,输出添加成功的提示。

6、定义方法实现查看所有图书。方法返回值void,参数列表为集合ArrayList。如果集合长度为0,给出提示,结束方法,否则遍历集合,获取每个图书对象,再调用对象的get方法,获取所有信息展示即可。

7、定义方式实现根据名称查看一本图书。方法返回值void,参数列表为集合ArrayList。键盘录入图书的名称,遍历集合,获取每个图书的名称信息进行比较,如果相同,输出该图书信息,结束方法。否则输出不存在该图书。

8、定义方法实现根据编号修改图书信息。方法返回值void,参数列表为集合ArrayList。键盘录入图书编号,查询该编号是否存在,如果存在,再依次录入图书的修改后信息,创建新的图书对象,存入集合,将原对象覆盖,给出成功的提示,否则提示该编号图书不存在。

9、定义方法实现根据编号删除图书信息。方法返回值void,参数列表为集合ArrayList。键盘录入图书编号,查询该编号是否存在,如果存在,根据索引删除该对象,返回成功的提示,否则提示该编号的图书不存在。

10、退出系统的功能直接调用System的exit方法实现即可。

参考答案

package test.test4;
​
public class Book {
    // 1、创建Book类,属性String类型的id,
    // name,author,price。
    // 提供构造方法、get和set方法。
    private String id;
    private String name;
    private String author;
    private String price;
​
    public Book() {
    }
​
    public Book(String id, String name, String author, String price) {
        this.id = id;
        this.name = name;
        this.author = author;
        this.price = price;
    }
​
    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 getAuthor() {
        return author;
    }
​
    public void setAuthor(String author) {
        this.author = author;
    }
​
    public String getPrice() {
        return price;
    }
​
    public void setPrice(String price) {
        this.price = price;
    }
}
package test.test4;
​
import java.util.ArrayList;
import java.util.Scanner;
​
public class Test04 {
    public static void main(String[] args) {
        // 2、创建测试类Test04,在main方法中,创建键盘录入对象,
        // 创建ArrayList集合对象用于存储图书。
        ArrayList<Book> list = new ArrayList<>();
​
        while (true) {
            // 3、使用输出语句定义一个操作菜单,
            // 包含添加、查看全部、查看单个、修改、查询、退出功能,
            // 使用switch语句对键盘录入的菜单项进行判断。
            System.out.println("-----------------------------------------");
            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:退出系统");
​
            Scanner scanner = new Scanner(System.in);
​
            String choose = scanner.next();
            switch (choose) {
​
                case "1" -> addFeature(list);
                case "2" -> lookEveryone(list);
                case "3" -> lookName(list);
                case "4" -> delete(list);
                case "5" -> revise(list);
                case "6" -> System.exit(0);
                default -> System.out.println("输入错误,请重新输入");
​
            }
        }
​
    }
​
    // 4、定义方法实现判断id是否已经存在。
    // 方法返回值boolean类型,
    // 参数列表为集合ArrayList和要查找的id字符串。
    // 遍历集合,判断id是否与集合中的Book对象的id相同,
    // 如果有相同,返回true,否则返回false
    public static boolean pdId(ArrayList<Book> list, String id) {
        for (int i = 0; i < list.size(); i++) {
            Book b = list.get(i);
            String sId = b.getId();
            if (sId.equals(id)) {
                return true;
            }
        }
        return false;
    }
​
// 5、定义方法实现添加功能。
// 方法返回值void,参数列表为集合ArrayList。
// 在方法中,先使用键盘录入获取用户录入的id信息,
// 调用方法判断id是否存在,如果存在,重新录入,
// 如果不存在,再依次获取图书的其他信息,创建图书对象,
// 并将图书对象存入集合中,输出添加成功的提示。
​
    public static ArrayList<Book> addFeature(ArrayList<Book> list) {
        Book b = new Book();
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("输入图书id");
            String id = scanner.next();
            boolean flag = pdId(list, id);
            if (flag) {
                System.out.println("已存在,请重新输入");
            } else {
                b.setId(id);
                break;
            }
        }
​
        System.out.println("输入图书name");
        String name = scanner.next();
        b.setName(name);
​
        System.out.println("输入图书author");
        String author = scanner.next();
        b.setAuthor(author);
​
        System.out.println("输入图书price");
        String price = scanner.next();
        b.setPrice(price);
​
        list.add(b);
        System.out.println("添加成功");
​
        return list;
​
    }
​
    // 6、定义方法实现查看所有图书。
    // 方法返回值void,参数列表为集合ArrayList。
    // 如果集合长度为0,给出提示,结束方法,否则遍历集合,
    // 获取每个图书对象,再调用对象的get方法,
    // 获取所有信息展示即可。
    public static void lookEveryone(ArrayList<Book> list) {
        if (list.size() == 0) {
            System.out.println("无图书");
        }
        for (int i = 0; i < list.size(); i++) {
            Book b = list.get(i);
            System.out.println(b.getId() + "," + b.getName() + "," + b.getAuthor() + "," + b.getPrice());
        }
    }
​
    // 7、定义方式实现根据名称查看一本图书。
    // 方法返回值void,参数列表为集合ArrayList。
    // 键盘录入图书的名称,遍历集合,
    // 获取每个图书的名称信息进行比较,
    // 如果相同,输出该图书信息,结束方法。
    // 否则输出不存在该图书。
    public static void lookName(ArrayList<Book> list) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入图书名称");
        String s = scanner.next();
        for (int i = 0; i < list.size(); i++) {
            Book b = list.get(i);
            if (s.equals(b.getName())) {
                System.out.println(b.getId() + "," + b.getName() + "," + b.getAuthor() + "," + b.getPrice());
                return;
            }
        }
        System.out.println("不存在此书");
    }
​
    // 8、定义方法实现根据编号修改图书信息。
    // 方法返回值void,参数列表为集合ArrayList。
    // 键盘录入图书编号,查询该编号是否存在,
    // 如果存在,再依次录入图书的修改后信息,
    // 创建新的图书对象,存入集合,将原对象覆盖,
    // 给出成功的提示,否则提示该编号图书不存在。
​
    public static void revise(ArrayList<Book> list) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入想要修改的图书编号");
        String s = scanner.next();
        for (int i = 0; i < list.size(); i++) {
            Book b = list.get(i);
            if (s.equals(list.get(i).getId())) {
                System.out.println("输入图书name");
                String name = scanner.next();
                b.setName(name);
​
                System.out.println("输入图书author");
                String author = scanner.next();
                b.setAuthor(author);
​
                System.out.println("输入图书price");
                String price = scanner.next();
                b.setPrice(price);
​
                return;
            }
​
        }
        System.out.println("此编号图书不存在");
​
    }
​
//    9、定义方法实现根据编号删除图书信息。
//    方法返回值void,参数列表为集合ArrayList。
//    键盘录入图书编号,查询该编号是否存在,
//    如果存在,根据索引删除该对象,返回成功的提示,
//    否则提示该编号的图书不存在。
    public static void delete(ArrayList<Book> list) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入要删除的图书编号");
        String s = scanner.next();
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId().equals(s)) {
                list.remove(i);
                return;
            }
        }
        System.out.println("该编号的图书不存在");
    }
​
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值