【Java】刷题题库

简介: 【Java】刷题题库
  1. 多态


1.创建员工类Employee,包含私有姓名和年龄属性,仅提供全参构造,提供get/set方法,提供抽象的自我介绍方法void introduce();


2.创建员工类的子类助理老师Assistant,在助理老师类中提供自我介绍的方法introduce()、辅助教学的方法void assist()和讲作业题void teachHomework()的方法:


      (1)在自我介绍方法中打印"我是助理老师,我叫***,年龄是***岁"(要求打印出具体的年龄和姓名,***通过get方法获取当前对象的姓名和年龄)


      (2)在讲作业题方法中打印"***开始讲作业题了"(***通过get方法获取当前对象的姓名)


      (3)在执行辅助教学方法时需先调用自我介绍方法,然后打印"开始自习",最后再调用讲作业题方法.


3.创建员工类的子类讲师Teacher,在讲师类中提供自我介绍的方法void introduce()、讲课方法void teach()和呼叫助理老师的方法Assistant callAssistant(String name,int age):


   (1)在自我介绍方法中打印"我是讲师,我叫***,年龄是***岁"(要求打印出具体的年龄和姓名,***通过get方法获取当前对象的姓名和年龄)


      (2)在呼叫助理老师方法中返回一个助理老师对象


      (3)在执行讲课方法时先调用自我介绍方法,然后打印"开始讲课了。。。。下课了"


4.在测试类的main方法中:


      (1)创建讲师对象,调用讲师的讲课方法


      (2)调用讲师的呼叫助理老师方法获取到助理老师对象,调用该助理老师对象的辅助教学方法


  1. Map+IO


现有一串字符串”上海传智播客,上海黑马,武汉传智播客,深圳黑马,北京传智播客,广州黑马,北京黑马”,要求使用程序统计出”传智播客”和”黑马”在该字符串中出现的次数,然后按照以下指定格式输出到当前项目下的times.txt中


times.txt文件格式如下:


传智播客(1)


黑马(2)


  1. 集合+IO


(birthday 使用日期类Date,去掉马建国那条数据;实体类属性已经给好)


students.txt样本数据格式说明:


彭万里;2007年1月;311336092;18;青海;69,8,3,55


对应释义:


学生姓名(name);生日(birthday);学号(studentNumber);年龄(age);籍贯(address);成绩信息(grade)。


其中四组成绩信息(69,8,3,55),分别表示数学成绩(mathematics),英语成绩(english),编程成绩(programme),体育成绩(sports)


根据样本数据的格式,自行设计名字为Student的java类


题目要求:


完成如下功能实现:


需求一,编写代码对students.txt文件全部内容进行读取,以对象的形式存储到集合中


需求二,统计数学学科以及编程学科的成绩平均分进行打印


输出格式:数学学科平均分(80)编程学科平均分(90)


需求三,统计各省人数并进行打印


输出格式: 上海(3) 北京(2)


需求四,统计各省每个学科成绩的平均分并打印


输出格式:黑龙江(72,32,35,47)


其中72代表黑龙江省所有学生的数学成绩的平均分


其中21代表黑龙江省所有学生的英语成绩的平均分


其中35代表黑龙江省所有学生的编程成绩的平均分


其中47代表黑龙江省所有学生的体育成绩的平均分


需求五,统计样本数据中每个月份分别都有多少人过生日并在控制台进行打印


输出格式:1月份(12) 2月份(22)


需求六,分析所有学生名字中,每个字出现的次数并打印


输出格式:锋(10) 江(8)


需求七,统计所有学生名字中,哪个字出现的次数最多并打印


输出格式:样本数据中“江”出现的次数最多,共出现xx次


记录用户或游客登陆信息,要求如下:


1. 在项目根目录下新建2个txt文件:data和user,user文件中有2行用户信息内容(该内容可以手动在文件中输入,无需程序写入),格式(用户名=密码)具体如下:


jack=1234


rose=4567


2. 创建静态的用户登录方法:boolean login(),方法中要求完成:


2.1 提示用户输入用户名和密码,并获取键盘录入的用户名和密码


2.2 根据键盘录入的用户名和密码匹配user文件中的用户信息,如用户名和密码都匹配成功,将用户名、登录成功的时间和登录状态存入data文件中,并在控制台提示登录成功,存入的格式: jack 2016-09-21 00:43 登陆成功!,


如匹配不成功,将用户名、登录失败的时间和登录状态存入data文件中,并在控制台提示登录失败,存入的格式:jack 2016-09-21 00:48 登陆失败!


3. 创建静态的游客浏览方法:void otherLogin(),将游客、浏览的时间存入data文件中,存入格式:游客 2016-09-21 00:03 进行浏览!


4. 定义main方法,程序运行时,在控制台提示:1.账号登陆   2.游客浏览


4.1键盘录入1执行用户登录方法,如登陆成功结束程序,如登陆不成功跳回初始提示界面


4.2 键盘录入2执行游客浏览方法,执行后结束程序


4.3 如果键盘录入其他整数,提示"请输入正确浏览方式!",并跳回初始提示界面    


  1. 多态


正在上传…重新上传取消


根据上图所示完成如下要求:


1.,定义出抽象类 神仙类ShenXian,接口 打猴子HitMonkey,以及神仙类的两个子类二郎神ErLangShen和太上老君TaiShangLaoJun,


抽象类 神仙类 中提供满参构造方法,并且为name, age 属性提供必要的get/set方法 ,


二郎神类和太上老君类定义满参数构造方法,并用super访问父类构造方法,2个子类中除构造方法之外的所有方法内,都需调用get方法获得当前对象的name和age属性


2.定义测试类Test,测试类中, 使用多态创建二郎神,太上老君对象.并给对象赋值. 使用多态方式运行eat方法. 使用强制转换 , 运行73变 ,遛狗 ,三昧真火和打猴子方法


  1. 多态


正在上传…重新上传取消


根据图上所示,定义类和接口,要求:


1.创建抽象类手机类Phone,提供满参数构造方法,不提供空参数构造方法,添加必要的get/set方法,定义抽象方法void call(),void send()


2.创建上网接口Net,抽象方法 void upload(), void download().


3.创建子类普通手机类Ordinary_Phone,继承手机类Phone,添加必要的构造方法,重写抽象方法


创建智能手机类Smart_Phone,继承手机类Phone并实现上网接口Net,添加必须的构造方法,重写抽象方法. 在重写call()和send()方法时,需要打印出自己手机的品牌和型号.


4.创建抽象类 GetInstance,定义Phone  getPhone(int n) 静态方法 ,如果参数n为0,返回普通手机类对象,参数,n为其他值返回智能手机类对象.  


在GetInstance类中定义创建Net  getNet()静态方法


5.创建测试类Test, 在main方法中调用GetInstance类静态方法getPhone(int n),并传递0,和其他值,获取Phone类型对象,并调用方法call(),send()


main方法中,调用GetInstance类静态方法getNet(),获取Net类型对象,并调用upload(),download()方法


  1. IO+Set


去除指定文件中的重复字符,要求如下:

1. 在项目根目录下新建2个txt文件:data和result,data文件中有2行内容(该内容可以手动在文件中输入,无需程序写入),具体如下:

12345abcde

abcde12345

2. 使用IO流读取data文件中的内容,并将文件内容中的所有重复字符去除,将去除重复字符之后的新字符写入到result文件中


  1. 面向对象+IO


1) 定义动物类Animal,动物类中有动物性别 String sex;名称 String name;来源 String source,提供get/set方法。


2) 定义动物熊猫 Panda ,继承动物Animal类;


3) 定义动物猴子 Monkey ,继承动物Animal类;


4) 定义动物大象 Elephant ,继承动物Animal类;


5) 定义动物园类Zoo,


动物园中有成员变量 ArrayList<String> sources;提供get/set方法,用于保存动物园有来自哪些地方的动物;


动物园中有成员变量 ArrayList<Animal> animals;提供get/set方法,可以保存所有的动物


6) 定义测试类Test


在测试类中创建main方法,


main方法中创建1只熊猫:


姓名是“熊猫”,性别是“雄性”,来源于“中国”;


main方法中创建2只猴子:


1只姓名是“猴子”,性别是“雌性”,来源是“印度”;


1只姓名是“猴子”,性别是“雌性”,来源于“缅甸”;


main方法中创建3头大象,


1头姓名是“大象”,性别是“雄性”,来源是“中国”;


1头姓名是“大象”,性别是“雌性”,来源是“印度”;


1头姓名是“大象”,性别是“雌性”,来源是“缅甸”;


main方法中创建集合ArrayList<Animal> animals,将6个动物放入集合中;


main方法中创建1个动物园对象Zoo zoo;


7) 测试类中定义方法 void addAnimal(Zoo zoo,ArrayList<Animal> animals);方法的功能要求如下:


1、将传入的动物集合放入到动物园对象中;


2、将动物的来源放入到动物园zoo的来源sources中,来源不要重复,例如:来源于中国的动物有2个,来源缅甸的动物有2个,来源印度的动物有2个,那么来源中只存放一个“中国”,一个“缅甸”。一个“印度”;


8) 在测试类中创建方法,void countForFemale(Zoo zoo);方法中统计哪些动物的雌性数量大于等于2只(动物园只有熊猫、猴子、大象),打印出这些动物的名字,一类动物只能打印一次。


打印格式要求:猴子的雌性动物数量大于等于两只;


 大象的雌性动物数量大于等于两只;


9) 在测试类中创建方法,ArrayList<Animal> findSameSource(Zoo zoo );找出哪一类动物来源包含动物园中所有动物的来源,返回这一类所有的动物(动物园只有熊猫、猴子、大象)


  1. 面向对象+IO


创建接口Study 定义抽象方法void study();


创建Person类对象,拥有私有属性: 姓名String name,性别String sex,年龄int age


创建Score类 有私有属性:数学成绩 int math , 语文成绩 int Chinese 英语成绩 int English  仅提供满参构造和set/get方法


创建Student类继承Person类,私有成员变量分数Score scores, 仅提供满参构造和set/get实现study接口,重写study()方法,方法内部


打印”姓名+性别+年龄+在学习.”


Student类特有方法 void showInfo() 方法内部展示同学的名字,性别,年龄以及成绩信息


创建测试类,读取a.txt文件中的内容到一个集合中,a.txt文件内容如下:


张三丰,男,18,69,20,60


张三丰,男,18,69,20,60


貂蝉,女,15,88,74,63


李四光,男,19,75,65,36


小乔,女,17,90,85,73


张勇,男,22,32,95,84


张勇,男,22,32,95,84


其中张三丰是名字,男 是性别,18是年龄,69是数学成绩,20是语文成绩,60是英语成绩.


将a.txt中的数据保存到student类型的集合里面,去除姓名相同的同学.


(1)遍历集合,调用各个对象的study方法和showInfo方法.


(2)遍历集合,获取到姓张的所有同学, 计算出姓张同学的平均分,并且打印


(3)遍历集合,获取到性别为女的所有同学, 计算出女同学的平均分


(4)在测试类中定义Student GetMaxAvg(ArrayList<Student>students)方法,返回平均分最高的student对象.打印信息.  


  1. 面向对象+IO


创建抽象Pet(宠物)类,内有私有的成员变量String name(名字),String variety(种类).int age(年龄). 抽象吃方法void eat();抽象叫方法void bellow();仅提供满参构造和set/get方法.


创建Dog类继承Pet类,重写eat()方法,方法内打印”


6岁的旺财狗在吃狗粮,真香!” 重写bellow()方法,方法内打印”6岁的旺财狗在汪汪汪的叫”特有方法看家LookHome(),方法内打印”6岁的旺财狗在看家,汪汪汪”.


创建Cat类继承Pet类, 重写eat()方法,方法内打印”


7岁的加菲猫在吃猫粮,嘿嘿嘿!” 重写bellow()方法,方法内打印”7岁的加菲猫在喵喵喵的叫” 特有方法抓老鼠CatchMouse(),方法内打印”7岁的加菲猫在抓老鼠,吃掉!”.


创建Bird类继承Pet类, 重写eat()方法,方法内打印”


5岁的比尔鸟在吃鸟食,叽叽!” 重写bellow()方法,方法内打印”5岁的比尔鸟在叽叽叽叽的叫” 特有方法唱歌sing(),方法内打印”5岁的比尔鸟在唱歌,真好听!”.


创建Person类,私有成员变量String name(名字),int age(年龄),String sex(性别),ArrayList<Pet>pets(宠物集合). 仅提供满参构造和set/get方法.


定义测试类,创建三个Person对象,名字分别为petter,Alisa,Jason;年龄分别为19,20,21;性别分别是男,女,男;每个人都有两个宠物,Petter的宠物是狗和鸟,Alisa的宠物是猫和鸟,Jason的宠物是鸟和狗.


(1) 遍历集合,定义showInfo方法,方法传入一个Person集合,方法内部展示每个人的信息.


(2) 有一天Alisa的猫咪淘气的将鸟放飞了,所以Alisa的宠物只有猫了,请设计方法删除Alisa的宠物鸟.


(3) 打印出每个人宠物得eat方法和bellow方法以及每个宠物特有的方法.


(4) 将每个人的宠物用一下形式写入到Pet.txt文件中.一个人一行


Person{name=’petter’,age=’19’,sex=’男’,pets=[Pet{ name=’旺财’,variety=’狗’age=’6’},


Pet{ name=’ 比尔’ variety=’狗’age=’6’}]


  1. 多态


根据要求完成代码


1.抽象类Drink(饮品),包含私有属性String name(品名)、double price(价格),生成getter/setter方法,并且定义空参和满参构


造方法。


 Drink(饮品) 包含抽象方法 void taste(),该方法负责输出饮料的味道。


2.接口Lotto("揭盖有奖"),接口中含有 抽象方法 double lotto(),方法功能是可以随机优惠一些金额,返回值是优惠金额


3.抽象类Drink(饮品)有两个具体的子类Beer(啤酒)和Coffee(咖啡), 两个子类都只定义了满参构造方法,在构造方法中访问了父类的满


参构造方法。两个子类都实现了接口Lotto,重写了double lotto()方法。


其中Coffee(咖啡)类中实现父类中方法void taste(),方法中输出"我是伤心的咖啡,味道是苦的",在实现接口方法double lotto()中


,输出 name(品名)+"咖啡不参与揭盖有奖活动",并返回 0;


Beer(啤酒类)中实现父类中方法void taste(),方法中输出"我是有故事的啤酒,味道是涩的",在实现接口方法double lotto()中,输


出 name(品名)+"啤酒正在参与揭盖有奖活动",并返回随机优惠金额:(算法 0-1的随机数 * price价格)


4.测试类


 使用多态创建Drink(饮品)两种饮品,其中Beer 品名 "青岛冰醇啤酒600ml",价格 3.5元, Coffer 品名"蓝山咖啡350ml",价格 199


元,将两种饮品放入ArrayList<Drink>集合中,遍历集合,判断集合中的每一个元素,如果该元素是Beer类型 就向下转型为Beer,调用


它的taste()方法,调用double lotto()方法,接收返回金额,并打印"优惠金额为"+返回金额。;如果该元素是是Coffee类型 就向下转


型为Coffee,调用它的taste()方法,调用double lotto()方法,接收返回金额,并打印"优惠金额为"+返回金额。


  1. 文件加密和解密


1.图片加密


 编写一个方法 void writeFileToTxt(File file)


 现有一个图片p1.png,读取成字节数组,对字节数组进行加密(每个数组+1),写入到data.txt中.


    Byte[] b ={100,200,300,400};


             101,201,301,401


创建输入流  p1.png   is


得到图片的字节数组  IOUtils.toByteArray( is );


遍历字节数组


每个字节+1


将新的字节数组写入到data.txt中  


 编写过程中,对异常进行捕获,打印出对应的异常信息


2.图片解密


 编写一个方法 void readTxtToFile(File file)


 将data.txt的字节数组读取过来,对字节进行解密(每个数组+1),将字节数组保存到文件p1_coyp.png


  编写过程中,对异常进行捕获,打印出对应的异常信息


3.编写测试类,调用方法。


  1. IOUtils+Map

统计小说中每个字符出现的次数,将统计后的数据放入map集合中,key为字符,value为次数,把结果写入到count.txt中。格式为  

中(100)

国(99)  

每个占一行


  1. IOUtils

两个文件 a.txt,b.txt,都包含内容,将a.txt 和b.txt的内容交换,要求使用IOUtils。

  1. IOUtils

创建Merge类,创建void mergeMusic()方法,读取a.mp3和b.mp3(文件存放位置不限),然后合并两个mp3文件的数据保存到c.mp3中。

  1. IOUtils+Map  

  2. ***读取已存在文件c:\a.txt和c:\b.txt中的学生数据存入到Student对象中,并且需要去除重复的Student对象后存放到List<Student>中,再把List<Student>保存到C:\students\c.txt文件中。类和方法不限制(20分)


对象去重:  Student对象 重写hashCode  equals 方法 ,Set集合


c:\a.txt(已提供)


{'number':'s_001','name':'张三','age':'18','gender':'男'}
{'name':'李四','age':'21','gender':'女','number':'s_002'}
{'name':'王五','gender':'女','number':'s_003','age':'19'}
{'gender':'男','age':'20','number':'s_004','name':'赵六'}
{'age':'18','number':'s_005','name':'钱七','gender':'男'}
c:\b.txt(已提供)
{'age':'19','number':'s_003','name':'王五','gender':'女'}
{'name':'赵六','age':'20','gender':'男','number':'s_004'}
{'number':'s_005','name':'钱七','age':'18','gender':'男'}
{'gender':'女','age':'19','number':'s_006','name':'刘八'}
{'name':'陈九','gender':'男','number':'s_007','age':'20'}


c:\students\c.txt(需要程序创建students文件夹和c.txt文件)

要求创建的c.txt文件内容格式如下,学生先后顺序不限:


{'number':'s_001','name':'张三','age':'18','gender':'男'}
{'number':'s_002','name':'李四','age':'21','gender':'女'}
{'number':'s_003','name':'王五','age':'19','gender':'女'}
{'number':'s_004','name':'赵六','age':'20','gender':'男'}
{'number':'s_005','name':'钱七','age':'18','gender':'男'}
{'number':'s_006','name':'刘八','age':'19','gender':'女'}
{'number':'s_007','name':'陈九','age':'20','gender':'男'}




相关文章
|
1月前
|
Java
【Java】——期末复习题题库(十)
【Java】——期末复习题题库(十)
53 4
|
3天前
|
存储 Java
java面试题大全带答案_面试题库_java面试宝典2018
java面试题大全带答案_面试题库_java面试宝典2018
17 3
|
3天前
|
SQL 前端开发 Java
2019史上最全java面试题题库大全800题含答案(面试宝典)(4)
2019史上最全java面试题题库大全800题含答案(面试宝典)
17 3
|
3天前
|
存储 设计模式 Java
java实习生面试题_java基础面试_java面试题2018及答案_java面试题库
java实习生面试题_java基础面试_java面试题2018及答案_java面试题库
19 1
|
3天前
|
安全 算法 Java
java线程面试题_2019java面试题库
java线程面试题_2019java面试题库
14 1
|
19天前
|
存储 算法 Java
JAVA后端开发面试题库
JAVA后端开发面试题库
22 1
|
3天前
|
Java
2022蓝桥杯大赛软件类省赛Java大学B组真题 刷题统计
2022蓝桥杯大赛软件类省赛Java大学B组真题 刷题统计
10 0
|
1月前
|
算法 Java C++
【Java 刷题记录】位运算
【Java 刷题记录】位运算
38 2
|
1月前
|
Java
JAVA数据结构刷题 -- 二叉树进阶
JAVA数据结构刷题 -- 二叉树进阶
26 0
|
1月前
|
存储 Java
JAVA数据结构刷题 -- 力扣二叉树
JAVA数据结构刷题 -- 力扣二叉树
27 0