【深圳大学java程序设计】实验3 接口回调及集合类应用

(1). 运行以下三个程序,对每一行语句加上注释,并对每一个程序的每一个输出结果给出分析。在报告中附上程序截图和详细的文字说明。(10分)

程序1:

使用正则表达式匹配,判断字符串中是否包含"ABC ",输出结果为false。

使用正则表达式匹配,判断字符串中是否包含"ABC",输出结果为true

将字符串中的",;"替换为"#",输出结果为"A,B;C"

将字符串中的","或";"替换为"#",输出结果为"A#B#C# "

使用正则表达式分割字符串,将其拆分为数组,输出结果为"A B C "

程序2:

这个程序定义了一个方法m,用于统计字符串中大写字母的个数。在main方法中,调用了m方法,并输出结果。在给定的字符串"Hi, Good morning"中,大写字母"H"和"G"的个数为2,因此输出结果为2。

程序3:

在main方法中,首先定义了一个字符串s和一个StringBuilder对象builder,然后调用change方法,分别传递了字符串s和builder。

在change方法中,对传递进来的字符串s进行了修改,但这个修改不会影响到main方法中的原始字符串s。

而对StringBuilder对象builder的修改则会影响到main方法中的原始builder对象。

所以,最终输出结果为原始字符串s仍为"Java",而builder对象变为"Java and HTML"。

(2). 抽象类和接口的实验。(20分)

(2.1) 定义一个抽象类Human:包含一个成员变量String name;构造方法Human(String name),用于初始化姓名name;一个抽象方法double sayHi()。在报告中附上程序截图和详细的文字说明。(5分)

定义一个抽象类Human:包含一个成员变量String name;

构造方法Human(String name),用于初始化姓名name;

一个抽象方法double sayHi()。

(2.2) 定义三个继承抽象类Human的类,分别命名为Chinese、Japanese和English,在这三个类中重写sayHi()方法,分别输出一句中文、日文和英文的问候;在报告中附上程序截图、运行结果和详细的文字说明。(5分)

(2.3) 定义一个测试类HumanTest:创建一个包含3个Human对象的数组,3个Human对象来自Chinese、Japanese和English类,循环调用该数组中的元素的sayHi()方法。在报告中附上程序截图、运行结果和详细的文字说明。(5分)

在这个例子中,首先创建了一个Human类型的数组,然后通过实例化Chinese、Japanese和English对象,并将它们放入数组中。

最后,通过循环遍历数组,调用每个元素的sayHi()方法,实现了多态性的效果。

每个实际类型的对象都会调用其相应子类实现的sayHi()方法,输出不同语言的问候。

(2.4) 通过一个接口(命名为Human)和三个实现类(命名为Chinese、Japanese和English)来达到如上类似的效果。在报告中附上程序截图、运行结果和详细的文字说明。(5分)

(3). 编写Java应用程序,计算菜单“北京烤鸭:199.1元;西芹炒肉:11.8元;酸菜鱼:59.1元;铁板牛柳:32.1元”的总价格。在报告中附上程序截图、完整的运行结果截图和简要文字说明。(10分)

在这个例子中,菜单使用Map<String, Double>来表示,其中键是菜名,值是价格。

calculateTotalPrice方法遍历菜单,累加每个菜的价格,最后输出总价格。

(4). 编写Java应用程序,每次从键盘读入一个包含有大写英文字母、小写英文字母和数字混杂的字符串(例如Aa123bEFGaaa49023),要求按顺序输出大写英文字母(例如AEFG)、小写英文字母(abaaa)和数字(12349023)。要求循环连续测试10次,在报告中附上程序截图、完整的运行结果截图和简要文字说明。(10分)

该代码用于从键盘读入字符串,按照要求输出大写英文字母、小写英文字母和数字。程序会循环连续测试10次。

(5). 编写Java应用程序,统计分析网页About-Shenzhen University (SZU) 中关于深圳大学的介绍的英文文章(包括题目About)中每个英文单词出现的次数(不区分大小写,不要写爬虫,可以把整篇文章的内容当作一个字符串读入),并输出出现次数最多的50个英文单词(按出现次数排序,每行输出10个英文单词,共5行)。在报告中附上程序截图、完整的运行结果截图和简要文字说明。(10分)

此程序通过正则表达式提取英文单词,并使用Map进行单词出现次数的统计。最后,使用Comparator对单词按出现次数降序排列,并输出前50个单词。

(6). 张三、李四等人是A社团成员,李四、王五等人是B社团成员,编写一个Java应用程序(要求使用集合类),输出参加A社团的人、参加B社团的人、以及同时参加两个社团的人。在报告中附上程序截图、完整的运行结果截图和详细的文字说明。(10分)

这个程序使用了两个 HashSet 分别表示A社团和B社团的成员。

通过 add 方法添加成员,并使用 retainAll 方法求取两个集合的交集,即同时参加两个社团的人。

最后,通过输出语句将结果打印出来。

(7). 有10个国家,其属性有name、GDP2020和COVID19,分别表示国家名称、国际货币基金组织公布的2020年的国内生产总值(单位:百万美元)和网易新闻2021年10月7日公布的新冠肺炎累计确诊人数。10个国家的信息如下:

name GDP2020 COVID19

美国 20932750 44918565

中华人民共和国 14722837 124924

日本 5048688 1706675

德国 3803014 4284354

英国 2710970 8006660

印度 2708770 33893002

法国 2598907 7038701

意大利 1884935 4689341

加拿大 1643408 1647142

韩国 1630871 323379

编写一个Java应用程序,使用TreeMap<K,V>,按照COVID19从小到大排序输出10个国家的信息,要求通过两种方式实现:通过实现Comparator接口和通过实现Comparable接口。在报告中附上程序截图、完整的运行结果截图和详细的文字说明。(10分)

comparable

位置: 实现 Comparable 接口的类在类的定义中直接实现了这个接口。

目的: 用于提供对象之间的自然顺序,也就是默认的排序规则。

方法: 实现了 Comparable 接口的类必须实现 compareTo 方法,该方法返回一个负数、零或正数,分别表示当前对象小于、等于或大于传入的对象。

使用场景: 适用于那些在对象之间存在明显的自然顺序关系的情况,例如数字、字母等。

comparator

位置: 实现 Comparator 接口的类通常独立于要比较的类,并在需要比较时作为独立的比较器类传递。

目的: 提供一种灵活的比较机制,允许在不修改类本身的情况下定义多个不同的比较规则。

方法: 实现 Comparator 接口的类必须实现 compare 方法,该方法也返回一个负数、零或正数,用于表示两个对象的比较结果。

使用场景: 适用于需要多种不同的排序规则,或者对于无法修改源代码的类进行比较的情况。

(by 归忆)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归忆_AC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值