java实验报告7:集合类的案例练习

【目的要求】

了解JavaAPI的使用

掌握集合类List,Set和Map的使用

【注意事项】

注意电源插座的用电安全;

遵守计算机的使用注意事项;

防范病毒。

二、实验环境

【使用工具】

  1. 电脑
  2. window系统
  3. JDK环境
  4. eclipse开发环境

【相关知识】

  1. String类是final类,因此
  2. Date类在 java.util包中。使用Date类的无参数构造方法创建的对象可以获取本地当前时间。用Date的构造方法 Date(long time)创建的Date对象表示相对1970年1月1日0点(GMT)的时间,例如参数time取值秒表示 Thu Jan 01 00:00:00 GMT 1970。
  3. Calendar类在 java. util包中。使用 Calendar类的 static方法 getInstance()以初始化一个
  • :
  1. calendar= Calendar. getInstance();
  •  calendar对象可以调用方法:
  1.  final void set (int year, int month, int date)
    public final void set(int year, int month, int date, int hour, int minute)
    public final void set (int year, int month, int date, int hour, int minute, int second)
  • year取负数时表示公元前。

【主要内容】

  1. 本例要求编写一个程序,模拟默认密码的自动生成策略,手动输入用户名,根据用户名自动生成默认密码。(在生成密码时,将用户名反转即为默认的密码。

代码如下:

public class Demo1 {
    public static void main(String[] args) {
        System.out.println("欢迎使用自动生成密码");
        System.out.println("请输入你的用户名");
        Scanner sc =new Scanner(System.in);
        String s=sc.nextLine();
        StringBuilder sb=new StringBuilder(s);
        System.out.println("你的密码是:"+ sb.reverse().toString());
    }
}
  1. 编写一个程序,模拟学生管理系统。可以实现对学生信息的添加、删除、修改和查询功能,要求使用List集合存储自定义的对象集合,并熟练使用List集合的中常用方法实现相关的操作。

  • 提示:进入系统后,有一个文字菜单,包括1.查询学生信息;2.添加学生信息;3.删除学生信息;4.修改学生信息;5.退出程序提供查询、添加(注意检测重复添加),删除,修改这些功能,
  • 学生信息包括:学号、姓名、年龄、籍贯等

代码如下:

package Pakeage2;


    public class Student {
        private String sid;//学号
        private String name;//姓名
        private  String age;//年龄
        private  String address;//地址

        //alt+insert快捷键
        public Student() {
        }

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

        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;
        }
    }
//测试类
package Pakeage2;

import java.util.*;

public class Demo2 {
    public static void main(String[] args) {
        //创建集合对象,用于存储学生数据
        ArrayList<Student> array=new ArrayList<Student>();
        //用循环完成回到主界面
        while (true) {
            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("请输入您的选择");
            Scanner sc = new Scanner(System.in);
            String line = sc.nextLine();
            switch (line) {
                case "1":
//                    System.out.println("添加学生");
                    addStudent(array);
                    break;
                case "2":
//                    System.out.println("删除学生");
                    deleteStudent(array);
                    break;
                case "3":
//                    System.out.println("修改学生");
                    updateStudent(array);
                    break;
                case "4":
//                    System.out.println("查看所有学生");
                    findAllStudent(array);
                    break;
                case "5":
                    System.out.println("谢谢使用!!!!");
//                    break;
                    System.exit(0);//JVM退出
            }
        }
    }
    //定义一个方法,用于添加学生信息
    public  static  void addStudent(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);

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

        //给出成功提示
        System.out.println("添加学生成功!!!");
    }
    //定义一个方法,用于查看学生信息
    public  static  void findAllStudent(ArrayList<Student> array){
        //判断集合是否有数据,如果没有显示提示信息
        if (array.size()== 0) {
            System.out.println("无信息,请添加信息再查询");
            //为了让程序不在往下执行,给出return;
            return;
        }
        //显示表头信息
        System.out.println("学号\t姓名\t年龄\t居住地" );
        //将集合中的数据取出按照对应格式显示学生信息,年龄显示补充“岁”
        for (int i = 0; i < array.size() ; i++) {
            Student s= array.get(i);
            System.out.println(s.getSid()+"\t"+s.getName()+"\t"+s.getAge()+"岁\t"+s.getAddress());
        }
    }
    //定义一个方法,用于删除学生信息
    public static void deleteStudent(ArrayList<Student> array){
        //键盘录入要删除的学生学号,显示提示信息
        Scanner sc=new Scanner(System.in);

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

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


        //遍历集合将对应学生从集合中删除
        int index=-1;
        for (int i = 0; i < array.size() ; i++) {
            Student s= array.get(i);
            if (s.getSid().equals(sid) ) {
                index=i;
                break;
            }
        }
        if (index == -1) {
            System.out.println("该信息不存在,请重新输入");
        }else{
            array.remove(index);
            //给出删除成功提示
            System.out.println("删除学生成功");
        }

    }
    //定义一个方法,用于修改学生信息
    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);

        //遍历集合修改对应学生信息
        int index=-1;
        for (int i = 0; i < array.size(); i++) {
            Student student = array.get(i);
            if (student.getSid().equals(sid)) {
                index=i;
                break;
               /* array.set(i, s);
                break;*/
            }
        }
        if (index == -1) {
            System.out.println("该信息不存在");
        }else {
            array.set(index,s);
            System.out.println("修改学生成功");

        }

    }
}

图6

编写一个Java应用程序,用户输入两个日期,程序将判断两个日期的大小关系,以及两个日期之间的间隔天数。

package Pakeage3;

import java.util.Scanner;
import java.util.Calendar;

public class Demo3{
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);
        //第一个日期输入
        System.out.println("输入第一个年月日数据:");
        System.out.print("请输入年份");
        Scanner y1 = new Scanner(System.in);
        int str1 = y1.nextInt();
        System.out.print("请输入月份");
        Scanner m1 = new Scanner(System.in);
        int str2 = m1.nextInt();
        System.out.print("请输入日期");
        Scanner d1 = new Scanner(System.in);
        int str3 = d1.nextInt();
        System.out.println("日期为"+str1+"年"+str2+"月"+str3+"日");
        //更新日期
        calendar.set(str1,str2,str3);
        Calendar calendar1 = Calendar.getInstance();
        System.out.println("输入第二个年月日数据:");
        //第二个日期的输入
        System.out.print("请输入年份");
        Scanner y2 = new Scanner(System.in);
        int int1 = y1.nextInt();
        System.out.print("请输入月份");
        Scanner m2 = new Scanner(System.in);
        int int2 = m2.nextInt();
        System.out.print("请输入日期");
        Scanner d2 = new Scanner(System.in);
        int int3 = d2.nextInt();
        System.out.println("日期为"+int1+"年"+int2+"月"+int3+"日");
        calendar1.set(int1,int2,int3);
        long time1 = calendar.getTimeInMillis();
        System.out.println(time1);
        long time2 = calendar1.getTimeInMillis();
        System.out.println(time2);
        if (time1 > time2) {
            //计算相差的天数
            long subDay = (time1 - time2) / (1000 * 60 * 60 * 24);
            System.out.println("您输入的第一个日期大于第二个日期");
            System.out.println(str1+"年"+str2+"月"+str3+"日"+"与"+int1+"年"+int2+"月"+int3+"日"+"相隔" + subDay + "天");
        } else {
            System.out.println("您输入的第二个日期大于第一个日期");
            long subDay = (time2 - time1) / (1000 * 60 * 60 * 24);
            System.out.println(str1+"年"+str2+"月"+str3+"日"+"与"+int1+"年"+int2+"月"+int3+"日"+"相隔" + subDay + "天");
        }
    }
}

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
掌握集合的概念、体系结构、分类及使用场景 2)了解Set接口及主要实现类(HashSet、TreeSet) 3)了解List接口及主要实现类(ArrayList、LinkedList、Vector) 4)了解Map接口及主要实现类(HashMap、TreeMap、HashTable) 二、实验内容及步骤 1、编写程序练习将以下5个Person类的对象放在一个HashSet中。 姓名:张三 身份证号:178880001 姓名:王五 身份证号:178880002 姓名:李四 身份证号:178880003 姓名:王五 身份证号:178880002 姓名:李四 身份证号:178880004 注意:因为Person类是自定义类,需要重写hashCode()方法和equals()方法,并规定只有姓名和身份证号都相等,则对象相等。 其中计算哈希码的算法:(31 + ((name == null) ? 0 : name.hashCode()))*31 + id (注:name:Person对象的姓名,id:Person对象的身份证号) 主方法中作如下测试: 1)创建一个可放置Person类对象的HashSet; 2)依次添加上述5个对象到HashSet中; 3)把集合中的元素打印出来(使用迭代器Iterator) 2、编写程序练习List集合的基本使用: 1) 创建一个只能容纳String对象名为names的ArrayList集合; 2)按顺序往集合中添加5个字符串对象:"张三"、"李四"、"王五"、"马六"、"赵七"; 3)对集合进行遍历,分别打印集合中的每个元素的位置与内容; 4)打印集合的大小,然后删除集合中的第3个元素,并显示删除元素的内容,然后再打印目前集合中第3个元素的内容,并再次打印集合的大小。 3、编写程序练习Map集合的基本使用: 1)创建一个只能容纳String对象的person的HashMap集合; 2)往集合中添加5个"键-值"对象: "id"-"1"; "name"-"张三"; "sex"-"男"; "age"-"25"; "hobby"-"爱学Java" 3)对集合进行遍历,分别打印集合中的每个元素的键与值; 4)打印集合的大小,然后删除集合中的键为age的元素,并显示删除元素的内容,并再次打印集合的大小。 四、思考题 1、集合中的List、Set、Map有哪些不同? 2、为什么使用集合框架,而尽可能少用数组作为存储结构? 3、如何使用TreeSet实现第一题?

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值