前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习Java必刷编程练习题

学习Java必刷编程练习题

作者头像
陶然同学
发布2023-02-27 09:58:28
7420
发布2023-02-27 09:58:28
举报
文章被收录于专栏:陶然同学博客
  1. Map

现有一个Map集合,map中学号(String)为key,学生(Student)为value,分别使用keySet方式  和entrySet的方式 打印集合中每一个Student对象的name属性和age属性

class Student{

  private String name;// 名字

  private int age;   //年龄

  //省略 getter/setter方法

}

  1. Map

研发部门有5个人,信息如下:(姓名-工资)【柳岩=2100, 张亮=1700, 诸葛亮=1800, 灭绝师太=2600, 东方不败=3800】,将以上员工的相关信息存放在适合的集合中,给柳岩涨工资300,迭代出每个元素的内容输出到控制台

  1. 定义HashMap,姓名作为key,工资作为value
  2. 使用put方法添加需要的元素
  3. 获取到柳岩的工资
  4. 修改柳岩的工资为当前工资加上300
  5. 使用增强for+keySet迭代出每个员工的工资
  6. Map+数组

有2个数组,第一个数组内容为:[黑龙江省,浙江省,江西省,广东省,福建省],第二个数组为:[哈尔滨,杭州,南昌,广州,福州],将第一个数组元素作为key,第二个数组元素作为value存储到Map集合中.如{黑龙江省=哈尔滨, 浙江省=杭州, …}

  1. Map+IO

有一个Map集合里面存储了学生的名字,年龄,内容如下:{赵四=21, 王二=17, 张三=21},1将里面的元素使用两种遍历方式打印的控制台,2将赵四的年龄改为18,3将元素存入到student.txt中.一行保存格式:姓名,年龄

  1. Map+IO

通过键盘录入五个人的姓名,每当录入一个人的姓名,随机给出一个成绩[0, 100](包含0分,也包含100分).将姓名和成绩存储到Map集合中,姓名作为key,成绩作为value.统计五个学生的总分,最高分,最低分,平均分,并将总分,最高分,最低分,平均分,写入到score.txt文件中,格式为: 总分=xxx,最高分=xxx,最低分=xxx,平均分=xxx

  1. String+Map

获取链接中的参数:httt://www.baidu.com?name=zhangsan&age=18&hobby=study

将字符串中信息保存进Map集合中

最后结果:name为key ,zhangsan为value

  1. IO

模拟用户注册的功能。使用键盘录入,接收用户名,接收密码,将密码保存在 user.txt中,一个用户名密码占一行  格式为 用户名=密码

  1. IO

随机生成100个三位数,将100个三位数放到数组中,然后将数组写入到data1.txt中,一行,每个三位数以逗号分隔。

  1. IO

编写一个程序实现以下功能: 

(1)产生50个1~9999之间的随机整数,将其存入文本文件a.txt中。

(2)从文件中读取这5000个整数,并计算其最大值、最小值和平均值并输出结果。

结果格式:

最小值是0

最大值是999

平均值是495.3258 //结果可能不同

  1. IO

现有学生对象Student,包含name属性,和三门成绩属性yuwen  shuxue yingyu

1.有5个学生,每个学生有三门功课

2.创建5个学生,并给其赋值

3.输入格式为:zhangshan,30,40,60并计算出总成绩

4.将每名学生的成绩保存在 ks.txt中,每个学生占一行

5.ks.txt的第一行为今天的日期(yyyy-MM-dd)

  1. Set

已知ArrayList集合存储了以下字符串:

Java

Python

IT

Jav

全栈

Python

编码完成:去除集合的重复元素,打印输出集合内容

  1. String+Set

去掉字符串中重复的字符,例如"abcadeeff" -> "abcdef"

  1. 面向对象

定义汽车Car类,Car类拥有油量 oilMass、速度 speed、 公里数 kilometre 、油耗 oilWear 属性,这些属性都为私有。

1、汽车Car类拥有启动方法start();

    该方法能设置汽车的油量为60,速度为0,公里数显示为200,油耗为8.5;

2、汽车Car类拥有展示方法show(),方法中用于展示目前的油量、速度、公里数、油耗。

    根据上述要求定义汽车类

  1. 面向对象

1.创建一个宠物类Pet,包含属性名字String name,  类型String type,年龄 int age,生成get/set方法和空参 满参构造方法

2.创建一个人类Person,包含属性名字String  pname和 所有宠物List<Pet> pets ,生成get/set方法和空参 满参构造方法

3.创建测试类,创建 3个宠物对象和1个人类对象。把宠物对象 放到人类中。

查找出人类的年龄最大的宠物,打印出名字

查找出人类的类型为“狗”的宠物信息

  1. 面向对象

创建一个数组存储三个学生的信息,学生信息包括姓名,年龄,数学成绩.创建setget以及构造方法.

学生信息:

张三,18岁,90分

李四,19岁,40分

王五,21岁,94分

1) 求这个数组中的数学成绩最高的人,并打印这个人的信息

2) 求这个数组中年纪最小的人的成绩,并打印

3) 求这个数组中所有人的成绩的平均分

4) 求这个数组中数学成绩不及格的总人数

  1. 面向对象(使用集合再次完成)

创建一个学生类Student,包含了名字,数学成绩和语文成绩.创建一个班级类CLasses.包含了班级名字和学生数组,设置构造方法和set/get方法.

1) 在测试类中创建学生对象,信息为: 张三,80,90; 李四90,92,王五94,96.创建学生数组stus,保存学生信息,创建班级对象给定班级名字并设置学生数组为stus

2) 在班级类中创建展示信息方法showClassInfo, 该方法中展示班级的名字和学生的个数,

打印信息格式:

班级名字:XXX班

班级人数:XX人

3) 在班级类中创建方法showMathAvg,打印:全班同学数学成绩的平均分是X分

4) 在班级类中创建方法showMathTopStudentInfo,打印:全班同学的数学成绩最高的分数是X分,由X同学获得

5) 在班级类中创建方法getLanguageTopStudent,将得到语文最高分的同学返回,注意方法的返回值类型为Student

  1. String

判分小程序:学生答案String str = "a#ab#c#D#a",正确答案String ans = "A#AC#C#BD#B",表示一共5题,答对一题3分

定义方法,接收学生答案和正确答案,计算学生得分并返回分数

"a#ab#c#D#a".split("#");// {"a","ab","c","D","a"}

"A#AC#C#BD#B".split("#") //{"A","AC","C","BD","B"}

  1. String+数组

定义一个长度为4的String类型数组,包含如下元素:”12ab”,”java”,”45Cd”,”Server78”;遍历数组进行判断,如果字符串是以数字开头或结尾,就将该字符串中包含的小写字符串转换成大写字符串,并在控制台打印输出

  1. String

处理字符串封装到对象。

将执行字符串中的内容封装到Dog对象中,sons属性为小狗的孩子们,字符串中逗号分隔的为多个孩子

String str = "<Dog name='小白' color='白色'  sons='小黑,小花'/>";

提供Dog对象

private String name;//姓名

private String color;//颜色

private ArrayList<String> sons=new ArrayList<String>( );//孩子

  1. Calendar

计算至今自己生活的天数

  1. Math

现有集合list,集合中元素为5,6,-9,使用Math类中的方法,获取集合中绝对值的最小值,并打印最小值的3次幂

  1. String+日期

编写public static String parseDatetime(String datetime)方法。(10分) 功能描述:根据输入的日期字符串(yyyy-MM-dd HH:mm)与当前日期比较,返回:         参数日期比当前日期大,提示日期不符合要求。         参数日期比当前日期小,范围小于1分钟:返回“刚刚”;         参数日期比当前日期小,差值范围大于等于1分钟:返回“x分钟之前”;x代表分钟数,         参数日期比当前日期小,差值范围大于等于1小时:返回“x小时之前”;x代表小时数,         参数日期比当前日期小,差值范围大于等于1天:返回“x天之前”;         参数日期比当前日期小,差值范围大于等于7天:返回“x周之前”;         参数日期比当前日期小,差值范围大于等于30天:返回“x月之前”;         参数日期比当前日期小,差值范围大于等于365天:返回“很久之前”。

  1. 编解码

将字符串String str1="天佑中华",以utf-8编码,然后用gbk解码,打印出来

将字符串String str2="大好河山",以utf-8编码,然后用utf-8解码,打印出来

  1. IO+Set

去除指定文件中的重复字符,要求如下: 1. 在项目根目录下新建2个txt文件:data和result,data文件中有2行内容(该内容可以手动在文件中输入,无需程序写入),具体如下: 12345abcde abcde12345 2. 使用IO流读取data文件中的内容,并将文件内容中的所有重复字符去除,将去除重复字符之后的新字符写入到result文件中

  1. IO+Set

随机生成100个3位数,将100个数存到数组,写入到data1.txt中,一行保存,每个逗号隔开。 读取data1.txt,将所有的数据 去重,排序,以1开头的为一行,一直到以9开头的为1行,每个数据以逗号隔开,保存到data2.txt中

  1. 面向对象+IO

Student对象  包含名字 String name, 语文成绩 int yuwen, 数学成绩 int math, 英语成绩 int yingyu.

创建如下四个对象,存放进一个List集合中。

"张三","37","89","5",

"李四","95","41","79",

"王五","60","84","29",

"赵六","87","46","86"

, 求:下面方法的参数 都是上面的List集合

 * 1.定义方法 printMathScore 打印所有同学数学成绩  

 * 2.定义方法 getCountMathScore   获取所有同学数学成绩的总和

 * 3.定义方法 getAvgMathScore  获取所有同学数学成绩的平均分

 * 4.定义方法 getAvgName     获取所有数学成绩超过平均分的人名

 * 5.定义方法 getAvgCount 获取所有数学成绩高过平均分的人数

* 6.定义方法 writeCjToFile 将学生和成绩存放进cj.txt中,格式如下:

  XXXX年XX月XX日:

  张三 37  89  5  XX(总分)

李四 37  89  5  XX(总分)

  1. IO+Map

模拟注册登录程序。 要求如下: 1.控制台打印: 1.注册 2.登录  3.退出 2.输入1 进入注册, 提示输入 用户名, 输入 密码 ,将用户名密码 写入user.txt中,格式 用户名=密码 一个占一行 3.输入2 进入登录, 提示输入用户名,输入密码,使用输入流读取user.txt,解析所有的用户名和密码,存放入map集合中,用户名为key,密码为value,如何用户名不正确,提示用户名不存在,程序结束,如果密码不正确,提示密码错误 程序结束 4.输入3 退出程序

  1. 面向对象

1、(2分)创建课程类Course,拥有课程名称(String cname)课程成绩(double score)2个成员变量,并提供get、set方法

2、(5分)创建学生类Student,拥有学生姓名(String stuName)平均成绩(double stuAvgScore)学生性别(String stuSex)所学课程(ArrayList<Course> allCourse)四个成员变量,并提供对应get、set方法

3、(7分)创建测试类Test,在main方法中创建3个学生类对象保存下表数据:

姓名

性别

张三

如花

王五

在测试类Test的main方法中将张三的课程成绩创建成对应的课程对象,并保存在“张三”对象中

张三

语文

58

数学

55

天文

22

在测试类Test的main方法中将如花的课程成绩创建成对应的课程对象,并保存在“如花”对象中

如花

语文

62

数学

72

在测试类Test的main方法中将王五的课程成绩创建成对应的课程对象,并保存在“张三”对象中

王五

语文

76

英语

90

地理

60

数学

80

4、(1分)在测试类的main方法中,将3个学生对象保存到集合ArrayList<Student> stus中。

5、(7分)在测试类中定义方法 void setAvgScore(ArrayList<Student> stus),计算每名学生的平均分,并保存到对应学生的成员变量sAvgScore中。在 setAvgScore方法中打印每名学生的姓名和总平均成绩。

6、(8分)在测试类中定义方法Student selectWeaker(ArrayList<Student> stus),接收所有学生数据,只有1名学生所有课程成绩都小于60分,在方法中找出并返回该学生对象。

7、(15分)在测试类中定义方法void printMaxAndMinByMath(ArrayList<Student> stus),接收所有学生数据,在方法中查找“数学”成绩的最高分和最低分。并打印数学最高分以及对应学生姓名, 打印数学最低分以及对应学生姓名,

打印格式:“数学最高分:xx,最高分学生姓名是:xx”

               “数学最低分:xx,最低分学生姓名是:xx”

  1. 打印日历

打印日历

Sun  Mon Tue Wed Thu Fri  Sat                                1     2     3     4     5     6    7  8    9    10   11   12   13 14   15   16    17   18   19   20   21   22   23    24   25   26   27   28   29   30    31   根据当前日期打印如上图形。

  1.     当日期发生变化时图形随当前日期而变化
  2.     日期必须与星期对应
  3.     星期头之间都是两个英文空格,例如Sun与Mon之间是两个空格;
  4.     日期与头的对齐方式是右对齐,例如Sun这一列有3、10、17、24、31,都是右对齐
  5.     星号表示当天。例如今天是8号,所以在8后面有“*”
  6. String+面向对象

字符串解析(20分)

1.1 学生数据

/* "<student sid='s0001' sname='zhangSan' age='18' gender='male'/>  <student sid='s0002' sname='liSi' age='23' gender='female'/>  <student sid='s0003' sname='wangWu' age='21' gender='female'/>  <student sid='s0004' sname='zhaoLiu' age='22' gender='male'/>"

*/

1.2//获取学生数据的方法

public static String getStudentsStr() {     StringBuilder buff = new StringBuilder();     buff.append("<student sid='s0001' sname='zhangSan' age='18' gender='male'/>").append("\n");     buff.append("<student sid='s0002' sname='liSi' age='23' gender='female'/>").append("\n");     buff.append("<student sid='s0003' sname='wangWu' age='21' gender='female'/>").append("\n");     buff.append("<student sid='s0004' sname='zhaoLiu' age='22' gender='male'/>").append("\n");     return buff.toString();

}

1.3//学生对象

public class Student {     private String sid;//学生学号     private String sname;//学生姓名     private int age;//学生年龄     private String gender;//学生性别     //get/set省略…… }

1.4. 创建Test测试类:

        根据以上数据编写方法:public static List<Student> getStudents(String studentsStr);         方法功能描述:通过调用getStudentsStr()方法,获取student数据的字符串,解析字符串,将对于的值保存到student对象的属性中。返回List<Student>。

2.1课程数据: /* "<course cid='c001' cname='Java' chour='180'/>  <course cid='c002' cname='JSP' chour='200'/>  <course cid='c003' cname='MySQL' chour='40'/>  <course cid='c001' cname='Java' chour='180'/>" */ 2.2//获取课程数据字符串 public static String getCoureseStr() {     StringBuilder buff = new StringBuilder();     buff.append("<course cid='c001' cname='Java' chour='180'/>").append("\n");     buff.append("<course cid='c002' cname='JSP' chour='200'/>").append("\n");     buff.append("<course cid='c003' cname='MySQL' chour='40'/>").append("\n");     buff.append("<course cid='c001' cname='Java' chour='180'/>").append("\n");     return buff.toString(); } 2.3//课程对象 public class Course {     private String cid;// 课程编号     private String cname;// 课程名称     private int chour;// 课时     //get/set省略,自己根据需要创建…… } 2.4.测试类Test中:根据以上数据编写方法:public static List<Course> getCourses(String coursesStr);     方法功能描述:通过调用getCoureseStr()方法获取保存Course 的集合字符串,解析XML字符串,返回List<Course>。需要使用Set去除相同元素! 3.1. 成绩数据 <score sid='s0001' cid='c001' score='82'/> <score sid='s0001' cid='c002' score='90'/> <score sid='s0001' cid='c003' score='85'/> <score sid='s0002' cid='c001' score='70'/> <score sid='s0002' cid='c002' score='58'/> <score sid='s0002' cid='c003' score='89'/> <score sid='s0003' cid='c001' score='98'/> <score sid='s0003' cid='c002' score='97'/> <score sid='s0003' cid='c003' score='92'/> <score sid='s0004' cid='c001' score='45'/> <score sid='s0004' cid='c002' score='61'/> <score sid='s0004' cid='c003' score='53'/> 3.2.获取成绩的方法 public static String getScoresStr() { StringBuilder buff = new StringBuilder();

buff.append("<score sid='s0001' cid='c001' score='82'/>").append("\n"); buff.append("<score sid='s0001' cid='c002' score='90'/>").append("\n"); buff.append("<score sid='s0001' cid='c003' score='85'/>").append("\n"); buff.append("<score sid='s0002' cid='c001' score='70'/>").append("\n"); buff.append("<score sid='s0002' cid='c002' score='58'/>").append("\n"); buff.append("<score sid='s0002' cid='c003' score='89'/>").append("\n"); buff.append("<score sid='s0003' cid='c001' score='98'/>").append("\n"); buff.append("<score sid='s0003' cid='c002' score='97'/>").append("\n"); buff.append("<score sid='s0003' cid='c003' score='92'/>").append("\n"); buff.append("<score sid='s0004' cid='c001' score='45'/>").append("\n"); buff.append("<score sid='s0004' cid='c002' score='61'/>").append("\n"); buff.append("<score sid='s0004' cid='c003' score='53'/>").append("\n"); return buff.toString(); } 3.3. 测试类Test中:根据以上数据编写方法:public static Map<String,Integer> getScoresMap(String scoresStr); 方法功能描述:通过调用getScoresStr()方法获取保存成绩的字符串,解析XML字符串,返回Map<String,Integer>。      key:sid_cid为键,(sid和cid拼接的字符串),例如:s0001_c001;      value:score为值。 3.4.编写方法:public static int getScore(String sname, String cname) 方法功能描述:根据学生姓名和课程名称查询学生成绩。 提示:本方法中需要调用以上3个方法获得:学生集合、课程集合、成绩集合。sid代表学生的唯一编号,学生和成绩可以通过比较sid获取学生成绩信息,cid代表课程的编号,通过比较cid可以获取课程信息。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档