![](https://img-blog.csdnimg.cn/20210609194333979.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java高级程序设计练习
适合Java高级程序初学者学习的实践练习题
明金同学
There is no place like 127.0.0.1
展开
-
编写Java程序,用户在网上购买商品(good),当用户买了一本书(book)、一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户,使用简单工厂模式模拟这一过程。
查看本章节查看作业目录需求说明:编写Java程序,用户在网上购买商品(good),当用户买了一本书(book)、一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户,使用简单工厂模式模拟这一过程。实现思路:(1)创建商品Goods 类,声明String 类型的name,double 类型的price。定义一个包含 name 属性和 price 属性的有参构造方法。创建抽象方法getGoodsInfo(),目的是输出商品信息。(2)创建帽子类 Hat、书原创 2020-10-14 20:01:05 · 4625 阅读 · 1 评论 -
编写Java程序,几个朋友到游乐场游玩,大家投票选择出行方式。使用程序来模拟这一结果。(工厂模式示例Demo)
查看本章节查看作业目录需求说明:几个朋友到游乐场游玩,大家投票选择出行方式。如果选择“A”最多的话,表示选择的交通工具是公交车(Bus);如果选择“B”最多的话,表示选择的交通工具是的士(Taxi);如果选择“C”最多的话,就表示选择的交通工具是地铁(Subway)。请使用程序来模拟这一结果。实现思路:(1)项目中创建简单工厂模式中的抽象产品角色,即交通工具类 Vehicle,该类使用abstract 修饰。在Vehicle 类中,声明 double 类型的实例变量 mph,表示交通原创 2020-10-14 19:54:42 · 4319 阅读 · 13 评论 -
编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以“62”开头,如图所示。
查看本章节查看作业目录需求说明:使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以“62”开头,如图所示。实现思路:(1)创建 Java 项目,在项目中创建 DCNumberUtil 类。(2)在 DCNumberUtil 类中,创建一个私有的 DCNumberUtil 类静态实例 dcNumberUtil,并私有化无参构造方法。(3)创建 String generateDCNumber() 方法,用来生成银联借记卡号。在该方法内,实例原创 2020-10-14 19:49:26 · 4458 阅读 · 1 评论 -
编写Java程序,中国道教中掌管天宫的最高权力统治者是玉帝(Emperor),我们可以认为玉帝是一个单例模式,在这个场景中,有玉帝和天宫的大臣(Minister)们,大臣每天要上朝参见玉帝,而每一天参
查看本章节查看作业目录需求说明:中国道教中掌管天宫的最高权力统治者是玉帝(Emperor),我们可以认为玉帝是一个单例模式,在这个场景中,有玉帝和天宫的大臣(Minister)们,大臣每天要上朝参见玉帝,而每一天参见的玉帝是同一个对象,接下来使用程序模拟这一场景。实现思路:(1)创建 Java 项目,在项目中创建 Emperor 类。(2)在 Emperor 类中,创建一个私有的 Emperor 类静态实例 emperor,并定义私有的无参构造方法。创建共有的静态方法 Emper原创 2020-10-14 19:46:19 · 11349 阅读 · 1 评论 -
编写Java程序,现要求使用 dom4j 解析 city.xml 文档,实现省份及对应城市的联动特效,效果如图所示
查看本章节查看作业目录需求说明:现要求使用 dom4j 解析 city.xml 文档,实现省份及对应城市的联动特效,效果如图所示实现思路:创建解析 XML 文档类 ParseXML 和窗体类 LinkageFrame ParseXML 类中,实例化一个 Map<String,List<String>> 类的对象 dataMap,用来保存读取Xml中的省份和城市,key为省份,value是城市列表 创建parse方法解析xml文件,方法中得到docu原创 2020-10-29 20:28:03 · 13110 阅读 · 0 评论 -
编写Java程序,使用 dom4j 解析上一节王者荣耀“英雄”对应的Xml文件数据内容,打印输出,具体格式
查看本章节查看作业目录需求说明:使用 dom4j 解析上一节王者荣耀“英雄”对应的Xml文件数据内容,打印输出,具体格式如图所示实现思路:创建ParseHeroXML用于解析Xml,创建Hero类用于封装解析的英雄对象数据 在ParseHeroXML中定义parse()解析方法,根据讲解SAXReader进行解析Xml文件,获取根节点,定义listNodes递归方法调用,传入根节点 在listNodes方法中,遍历节点信息,分别根据节点名称获取相关节点的属性,遇到hero节点时,原创 2020-10-13 19:28:24 · 4416 阅读 · 1 评论 -
编写Java程序,使用 dom4j 创建一个 XML 文档,文档名为“city.xml”。注意该文档的格式和数据
使用 dom4j 创建一个 XML 文档,文档名为“city.xml”。该文档的格式和数据如图所示创建Java项目,添加dom4j对应jar包,创建CreateCityXML类调用DocumentHelper的createDocument方法创建根节点,调用addAttribute方法设置name属性,并且设置为根节点调用DocumentHelper的createDocument方法创建子节点,调用对应父节点Element对象的add方法添加子节点(注意父子关系结构顺序)如果需要属性则调用El原创 2020-10-13 16:46:07 · 13127 阅读 · 1 评论 -
编写Java程序,创建一个 XML 文档,文档名为“hero.xml”,用于保存“王者荣耀”的英雄信息。
创建一个 XML 文档,文档名为“hero.xml”,用于保存“王者荣耀”的英雄信息。英雄信息包括编号(id)、姓名(name)、性别(gender)、职业(profession)、国籍(nationality)和价格(price)创建 Java 项目,在项目中创建 XML 文档 hero.xml在 hero.xml 文档中,创建根节点 heroList在根节点内,创建属性节点 hero,包含 id 和 name 两个属性在属性节点 hero 内,再创建元素节点 gender、profession、n原创 2020-10-13 16:02:28 · 11518 阅读 · 0 评论 -
编写Java程序,应用客户端和服务端通过 Eclipse 控制台的输入和显示实现简易的聊天功能
查看本章节查看作业目录需求说明:应用客户端和服务端通过 Eclipse 控制台的输入和显示实现简易的聊天功能实现思路:创建 Java 项目,在项目中创建服务端类 ChatServerThread 和客户端类 ChatClientThread 创建 Java 项目,在项目中创建发送类 SendImpl 和接收类 ReceiveImpl 在ChatServerThread 类中,监听 8888 端口,并开启发送和接收线程 在ChatClientThread 类中,连接 88原创 2020-10-13 11:22:23 · 5036 阅读 · 18 评论 -
编写Java程序,实现客户端向服务端上传文件的功能
查看本章节查看作业目录需求说明:实现客户端向服务端上传文件的功能当启动服务端后,运行客户端程序,系统提示客户在客户端输入上传文件的完整路径。当客户在客户端输入完成后,服务端实现文件上传实现思路:创建客户端类 FileClient 和服务端类 FileServer 在客户端类中定义uploadFile(Socket socket)方法,用于上传文件,使用BufferedOutputStream包装socket中输入流对象,使用new FileInputStream输入流对象读原创 2020-10-13 11:22:05 · 13200 阅读 · 0 评论 -
编写Java程序,使用 Socket类模拟用户加入 QQ 群时,QQ 小冰发送欢迎消息的场景(用户充当客户端,QQ 小冰充当服务端)
查看本章节查看作业目录需求说明:小冰是微软公司研发的人工智能机器人,被腾讯公司加入 QQ 群后,立即受到千万网友的喜爱。现在使用 Socket类模拟用户加入 QQ 群时,QQ 小冰发送欢迎消息的场景(用户充当客户端,QQ 小冰充当服务端)实现思路:创建 QQ 小冰类 AiRobot服务端类和用户类 User,在服务端类main方法中使用ServerSocket(8888)创建服务端套接字,同时调用accept方法等待和得到客户端Socket 从Socket中获取和客户端通信的输出流原创 2020-10-09 11:42:10 · 11496 阅读 · 1 评论 -
编写Java程序,根据提供的 IP 地址,获取主机名称和域名
查看本章节查看作业目录需求说明:根据提供的 IP 地址,获取主机名称和域名实现思路:创建 GetHostNameByIpAddress 类,在main方法中声明 String 类型的变量 ipAddress,调用 ipAddress 字符中的split方法分割字符串,指定的分隔符是“·”,并将方法返回值保存到 String 类型的数组变量 ipArr 中 实例化 byte 类型的数组变量 ipByteArr,用来保存 IP 地址,该数组长度与数组 ipArr 的长度相等 使.原创 2020-10-09 11:43:01 · 5064 阅读 · 1 评论 -
编写Java程序,使用ThreadLocal类,项目中创建账户类 Account,类中包括账户名称name、 ThreadLocal 类的引用变量amount,表示存款
查看本章节查看作业目录需求说明:某用户共有两张银行卡,账户名称相同,但卡号和余额不同。模拟用户使用这两张银行卡进行消费的过程,并打印出消费明细实现思路:项目中创建账户类 Account,类中包括账户名称name、 ThreadLocal 类的引用变量amount,表示存款 创建消费类 DailyConsmption实现Runnable 接 口。声明 账户类型的引用 account, 使 用new Random() 实例化一个随机类对象 random,并定义一个初始化账户的构造方法原创 2020-09-28 10:05:45 · 6204 阅读 · 30 评论 -
编写Java程序,模拟网上商城购物,当用户选好物品提交订单时,每笔订单会自动生成一个唯一的订单编号。
查看本章节查看作业目录需求说明:模拟网上商城购物,当用户选好物品提交订单时,每笔订单会自动生成一个唯一的订单编号。而部分电子商务网站在数据高峰期时,一毫秒可能需要处理近千笔的订单现在简单模拟 5 个订单同时提交,生成唯一订单编号的场景。订单编号的生成规则是以毫秒为单位的当前时间+订单序号例如,当前时间的毫秒数是 150000,那第 1 笔订单的编号就是 1500001,第 9 笔订单的编号就是 1500009实现思路:项目中创建订单类 Order(订单编号、订单金额、下单用户)原创 2020-09-27 17:00:24 · 4263 阅读 · 10 评论 -
编写Java程序,车站只剩 50 张从武汉到北京的车票,现有 3 个窗口售卖,用程序模拟售票的过程,使用Runnable解决线程安全问题
查看本章节查看作业目录需求说明:车站只剩 50 张从武汉到北京的车票,现有 3 个窗口售卖,用程序模拟售票的过程,要求使用同步方法保证售票过程中票数的正确性实现思路:创建 Java 项目,在项目中创建 SellTicketBySync 类,并实现 Runnable 接口 定义 int 类型的变量 ticket,表示剩余的车票数量,ticket 初始值为 50 创建同步方法 sellTicket()。在该方法体内,判断 ticket 的值是否大于 0。如果 ticket 的值大于原创 2020-09-27 16:24:04 · 3956 阅读 · 24 评论 -
编写Java程序,实现多线程操作同一个实例变量的操作会引发多线程并发的安全问题。
查看本章节查看作业目录需求说明:多线程操作同一个实例变量的操作会引发多线程并发的安全问题。现有 3 个线程代表 3 只猴子,对类中的一个整型变量 count(代表花的总数,共 20 朵花)进行操作。该变量代表花的总数,不同猴子(线程)每采摘一次,花的总数少 1,直至所有花被不同的猴子采摘完,程序结束实现思路:项目中创建 Current 类,在 Current 类中,声明静态的 Current 类型引用 current 和 int 类型的实例变量 num,并指定 num 的初始值为 2原创 2020-09-27 15:22:44 · 2121 阅读 · 19 评论 -
编写Java程序,前方有 3km 的道路障碍,4 辆普通车不能通过,必须等到清障车完成作业离开后,才能继续行驶。用程序来模拟这一过程的发生
查看本章节查看作业目录需求说明:前方有 3km 的道路障碍,4 辆普通车不能通过,必须等到清障车完成作业离开后,才能继续行驶。用程序来模拟这一过程的发生实现思路:创建清障车Wrecker类和车辆OrdinaryVehicle类都需要继承Thread 类 在 Wrecker 类中,定义初始化线程名的参构造方法,重写run方法,run方法中模拟循环3次,打印输出清障车的清理进度,并调用 Thread 类的 sleep休眠1.5秒 在 OrdinaryVehicle 类中,声明一个 W原创 2020-09-26 14:19:48 · 11436 阅读 · 12 评论 -
编写Java程序,使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip。
查看本章节查看作业目录需求说明:使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip。在拷贝过程中,每隔2000 毫秒显示一次文件已经被拷贝的大小及剩余的大小,直至文件完成拷贝,提示用户文件已经拷贝完成实现思路:创建 InstantThread 类,该类需要继承 Thread 类 在 InstantThread 类中创建两个 File 类型的静态实例 readFile(被拷贝的文件)和 writeFile(原创 2020-09-26 11:45:26 · 3998 阅读 · 0 评论 -
编写Java程序,车站只剩 50 张从武汉到北京的车票,现有 3 个窗口售卖,用程序模拟售票的过程
查看本章节查看作业目录需求说明:车站只剩 50 张从武汉到北京的车票,现有 3 个窗口售卖,用程序模拟售票的过程实现思路:创建SellTicket类实现 Runnable 接口,定义实例变量ticket赋值50,重写run方法 在run方法内,定义while 死循环。在循环体中,调用 Thread 类的静态方法 Thread.currentThread().getName() 获取当前运行线程的名称 ,打印线程名称和ticket变量值,然后让 ticket 自减。当 ticket原创 2020-09-25 11:14:36 · 4589 阅读 · 5 评论 -
编写Java程序,跑道长 50m,模拟 3 名学生同时在跑道跑步的场景 3名同学相当于3个线程对象
查看本章节查看作业目录需求说明:跑道长 50m,模拟 3 名学生同时在跑道跑步的场景 3名同学相当于3个线程对象实现思路:创建 Java 项目,在项目中创建StudentRunning类,该类继承 Thread 类 重写 StudentRunning类的 run() 方法,实现模拟变量自增 在类中定义 String 类型的变量 name,用来保存学生的姓名 在类中定义有参构造方法,目的通过构造方法给实例变量 name赋值 在 StudentRunning 类的 main() 方原创 2020-09-25 10:23:28 · 4979 阅读 · 1 评论 -
编写Java程序,读取文本文档的内容,去除文本中包含的“广告”字样,把更改后的内容保存到一个新的文本文档中
需求说明:读取文本文档的内容,去除文本中包含的“广告”字样,把更改后的内容保存到一个新的文本文档中实现思路:在main() 方法中,使用 new File(String pathname) 构造方法,分别创建用来读取的文件实例 file 和用来写入的文件实例 newFile编写 readTxtFile(File file) 方法读取文件内容,返回字符串编写 writeContent(String str, File newFile) 方法写入文件,写入文件之前,使用字符串的替换函原创 2020-09-26 14:55:48 · 11507 阅读 · 14 评论 -
编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内
需求说明:在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内实现思路:创建 SaveNewFile 类,在main方法中,使用2个new File指向一个要读取的文件和一个要写入的文件 定义String readTxtFile(File file) 方法,该方法将读取目标文件的内容,并将读取的内容返回 定义void writeContent(String str, File newFile) 方法,该方法用来将更改后的文原创 2020-09-26 14:57:24 · 222956 阅读 · 12 评论 -
编写Java程序,在一个文件夹内,查找占用磁盘空间最大的 jpg 文件,并输出文件大小
需求说明:在一个文件夹内,查找占用磁盘空间最大的 jpg 文件,并输出文件大小实现思路:创建ImageFileFilter类实现FilenameFilter接口,且重写accept方法,该方法中对文件后缀.jpg进行判断因涉及到比较文件大小操作,创建比较器类 FileComparator,实现 java.util.Comparator 接口,为该类添加泛型 File,并重写 compare(File file1,File file2) 方法,该方法的作用是对两个文件进行比较。创建运行原创 2020-09-25 00:18:34 · 4676 阅读 · 1 评论 -
编写Java程序,在电脑硬盘里,查看 f:\text4\name 目录是否存在。
需求说明:在电脑硬盘里,查看 f:\text4\name 目录是否存在。如果不存在,则创建该目录;如果存在,则查找 readme.txt文件是否存在。如果 readme.txt 文件不存在,则创建该文件;如果 readme.txt 文件存在,则输出该文件的路径和文件大小实现思路:创建Java类,在main() 方法中,使用 new File(“f:\text4\name”) 构造方法创建目录实例 调用exists方法判断是否存在目录,不存在则调用mkdirs创建目录 如果存在则调用list原创 2020-09-22 20:05:33 · 223642 阅读 · 1 评论