Java|Java面向对象题库

  1. 编码、解码
将字符串String str1="天佑中华",以utf-8编码,然后用gbk解码,打印出来
将字符串String str2="大好河山",以utf-8编码,然后用utf-8解码,打印出来

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

从控制台循环接收用户录入的学生信息,输入格式为:学号-学生名字
将学生信息保存到C盘下面的stu.txt文件中,一个学生信息占据一行数据。
当用户输入end时停止输入。


  1. File

将A1.txt的所有内容追加写入到B1.txt中

A1.txt内容:
11111
22222
33333

B1.txt内容:
aaaaa
bbbbb
ccccc

  1. File

两个文件 A2.txt,B2.txt,都包含内容,将A2.txt 和B2.txt的内容交换
A2.txt内容:
11111
22222
33333

B2.txt内容:
aaaaa
bbbbb
ccccc

  1. File

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

  1. File

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

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

格式:
100,102,105
201,202,203
……
903,907, 987,999



  1. IO 综合

1:项目根路径下有文件student.txt,文件中内容是学生的姓名和各科的成绩
张三:81.5,86.0,93.5
李四:78.0,84.0,90.0
王五:59.0,75.5,81.5
(Student.txt文件和内容可手动创建);
2:读取文件内容,计算出总分和平均分;在项目根目录下创建一个“成绩明细.txt”,将计算出的内容(以平均分从小到大)写入“成绩明细.txt”文件中,格式是:
王五:59.0,75.5,81.5 总分:216.0 平均分:72.0
李四:78.0,84.0,90.0 总分:252.0 平均分:84.0
张三:81.5,86.0,93.5 总分:261.0 平均分:87.0
注意:成绩明细.txt文件里面顺序;


  1. IO 综合

实现一个验证码小程序,要求如下:
在项目根目录下新建一个文件:data.txt,键盘录入3个字符串验证码,并存入data.txt中,要求一个验证码占一行;
键盘录入一个需要被校验的验证码,最多只能输入3次,如果输入的验证码在data.txt中存在:在控制台提示验证成功,并结束程序,如果输入的验证码在文件中不存在,当输入次数小于3时,控制台提示"验证失败",并可继续输入下次验证;当输入次数等于3时,控制台提示"错误输入超过3次,请明天再登陆",并结束程序
  1. IO 综合

记录用户或游客登陆信息,要求如下:
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. IO 综合

获取文件内容中的所有数字
        1. 在项目根路径创建data.txt文件(文件的创建和文件内容的输入都可手动创建和录入)
        2. 使用IO流获取d data.txt文件内容中的所有数字
        3. 将获取到的所有数字使用IO流写入到文件result.txt文件中

  1. Map集合

现有一个字符串,统计每种字符的数量。 Strings="asdsfdgfhghdgsfaasfdgqewretrytruyti12343527896334135342";
打印格式:
a(10)
b(20)


  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集合

现有一句英语句子,"If you want to change your fate I think you must come to the dark horse to learn java",(用空格间隔),统计每个单词出现的次数。
打印格式:
to=3
think=1
you=2

  1. Map集合
现有学生对象
class Student{
private String name;
private int age;
private String sex;

}
1. 统计学生的男女生数量男(5) 女(8)
2. 判断超过18岁的数量 和不超过18岁
("成年" value=https://www.it610.com/article/数量 )
("未成年" value=https://www.it610.com/article/数量)

附录:已有数据
Student s1=new Student("zhangsan",18,"男");
Student s2=new Student("lihong",22,"女");
Student s3=new Student("wangwu",19,"男");
Student s4=new Student("wuwu",8,"女");
Student s5=new Student("lilin",35,"男");
【Java|Java面向对象题库】
List list=new ArrayList();
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5);

  1. Map和IO

从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。
如果该 年没有举办世界杯,则输出:没有举办世界杯。
Map m=new HashMap<>();
m.put(1930, "乌拉圭");
m.put(1934, "意大利");
m.put(1938, "意大利");
m.put(1950, "乌拉圭");
m.put(1954, "西德");
m.put(1958, "巴西");
m.put(1962, "巴西");
m.put(1966, "英格兰");
m.put(1970, "巴西");
m.put(1974, "西德");
m.put(1978, "阿根廷");
m.put(1982, "意大利");
m.put(1986, "阿根廷");
m.put(1990, "西德");
m.put(1994, "巴西");
m.put(1998, "法国");
m.put(2002, "巴西");
m.put(2006, "意大利");
m.put(2010, "西班牙");
m.put(2014, "德国");
m.put(2018, "法国");

第二问:
创建一个方法: writeWinToFile(Map map,String state)
第一个参数是
输入一支球队的名字,将该球队夺冠的年份列表写入到win.txt中。
例如,读入"巴西",应当在文件中写入巴西 1958 1962 1970 1994 2002 读入"荷兰",应当文件中写入出
荷兰 没有获得过世界杯



  1. Set集合、迭代器

定义一个Set集合,集合类型为字符串,向集合中添加"a1","b1","c1","d1",使用迭代器打印Set集合中的每一个元素

  1. 集合和对象
定义"汽车"类,Car,包含以下成员:
1.1成员属性: brand (品牌):String类型, price (价格):int类型,属性使用private修饰,为所有属性提供set/get方法
定义测试类,在测试类中的main函数中完成:
2.1 实例化4个Car对象,4个对象的属性分别为:"Auto"25 ,”Audi”500,"Benz"700,”BMW” 400
2.2 创建一个ArrayList集合,分别将上面的4个Car对象添加到集合中
2.3 获取集合中元素的品牌为“B”开头的所有汽车价格总和,并在控制台打印输出

必须创建Employee接口如下,且内部构成如下,此接口不可更改:





  1. 集合和对象

public interface Employee {
public double getSalary(); //这个方法主要用于计算月薪
}

定义程序员类(Coder)、经理类(Manager)、测试员类(TestEngineer),此三个类需要实现Employee接口
程序员类要求有:double的底薪(basicSalary)、double的项目奖金(bonus)成员变量,getSalary()的计算:底薪+项目奖金
经理类要求有:double的底薪(basicSalary)、double的绩效(performance)0-1.5之间,getSalary()的计算:底薪*绩效(计算时绩效随机生成)
测试员类要求:double的底薪(basicSalary)、double的奖金(bonus)、double的绩效(performance),getSalary()的计算:底薪*绩效+项目奖金


要求在测试类中的main方法中定义List empList,生成两个程序员对象、三个经理对象、一个测试员对象,数据自定义,并添加到empList集合中
然后遍历empList计算所有人的月薪总和,并打印
打印格式:所有人的月薪总和为:xxxxx元

  1. 日期

编写方法 取得昨天的现在当前时刻 年月日 小时 分 秒. 方法名 String getYesterdayTime( ) 返回值为昨天的当前时间
格式: 2017-12-31 20:30:00
编写测试类,打印出昨日的现在当前时刻


  1. Set集合、迭代器

现有两个ArrayList集合,arr1={"1","2","3","4","5"}; ,arr2={"a","b","c","1","2"}; 将两个ArrayList的所有元素存放到新的Set集合中,使用迭代器将新的set集合中每一个元素打印出来。

  1. Set集合
双色球规则:双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1—33中选择;蓝色球号码从1—16中选择.请随机生成一注双色球号码

  1. 字符串

模拟验证手机号的过程,按照以下要求实现相关代码
a. 提示用户在控制台输入手机号,用一个字符串对其进行保存
b. 判断该手机号位数是否是11位
c. 判断该手机号,是否都是数字
d. 判断该手机号最后3位是相同数字则认为是靓号,否则不是e. 打印出结果

  1. 字符串综合

已知有三个城市一周的PM2.5值如下:(周一到周日)
北京=“21,52,121,196,88,8,80”
沈阳=“34,43,63,54,38,50,51”
天津=“36,47,96,157,64,12,41”
定义三个字符串来分别存储着三个城市的pm2.5值
完成以下要求:
  1. 根据逗号进行拆分,分别得到3额城市的pm2.5值的数组
  2. 将沈阳和天津周日的pm2.5值进行互换
  3. 输出北京空气质量最优(PM2.5值最小)和空气质量最差(PM2.5值最大)都是周几




  1. 字符串综合

现有字符串存放了两个学生信息,
String mapStr="",

要求拆开该字符串,将学生信息存放到学生对象中,然后将两个学生对象存放在Map集合中,学号(id)为key,学生对象(Student)为value,最后将map集合遍历打印出来。
class Student{
private String id; //学号
private String name; // 名字
private int age; //年龄
//省略 getter/setter方法
}


  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(ArrayListstudents)方法,返回平均分最高的student对象.打印信息.



  1. 18年面向对象2月考题(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)。
项目要求:
第一步,手动创建新的名为exam20181130的java项目,并在项目内部创建source文件夹
第二步,将考场发放的students.txt文件拷贝到source目录下
第三步,找到课程使用的名字为commons-io的jar包导入到exam20181130项目中
第四步,根据样本数据的格式,自行设计名字为Student的java类

题目要求:
完成如下功能实现:
需求一,编写代码对students.txt文件全部内容进行读取,以对象的形式存储到集合中
需求二,统计数学学科以及编程学科的成绩平均分进行打印
输出格式:数学学科平均分(80)编程学科平均分(90)

需求三,统计各省人数并进行打印
输出格式: 上海(3) 北京(2)

需求四,统计各省每个学科成绩的平均分并打印
输出格式:黑龙江(72,32,35,47)
其中72代表黑龙江省所有学生的数学成绩的平均分
其中21代表黑龙江省所有学生的英语成绩的平均分
其中35代表黑龙江省所有学生的编程成绩的平均分
其中47代表黑龙江省所有学生的体育成绩的平均分

需求五,统计样本数据中每个月份分别都有多少人过生日并在控制台进行打印
输出格式:1月份(12) 2月份(22)

需求六,分析所有学生名字中,每个字出现的次数并打印
输出格式:锋(10) 江(8)

需求七,统计所有学生名字中,哪个字出现的次数最多并打印
输出格式:样本数据中“江”出现的次数最多,共出现xx次


  1. 破解图片
现有一个加密文件 data.txt ,里面存储着一张图片的信息,加密规则是 每个字节-2,需要将图片破解出来,生成新的图片a.jpg 。
data.txt的内容如下:18597代表的是 出现的顺序 ,-41 代表的是18597处的字节(此字节是加密后的内容)。

18597=-41
18596=-3
18595=93

3=-34
2=-3
1=-42
0=-3




  1. 用户浏览

记录用户或游客登陆信息,要求如下:
  1. 在项目根目录下新建2个文件:data.txt和user.txt),
user.txt文件中有2行用户信息内容
jack=1234
rose=4567

2. 创建静态的用户登录方法:boolean login(),方法中要求完成:
2.1 提示用户输入用户名和密码,并获取键盘录入的用户名和密码
2.2 根据键盘录入的用户名和密码匹配user.txt文件中的用户信息,如用户名和密码都匹配成功,将用户名、登录成功的时间和登录状态存入data.txt文件中,并在控制台提示登录成功,存入的格式: jack 2016-09-21 00:43 登陆成功!,如匹配不成功,将用户名、登录失败的时间和登录状态存入data.txt文件中,并在控制台提示登录失败,存入的格式:jack 2016-09-21 00:48 登陆失败!

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

4. 定义main方法,程序运行时,在控制台提示:1.账号登陆2.游客浏览
4.1键盘录入1执行用户登录方法,如登陆成功结束程序,如登陆不成功跳回初始提示界面
4.2 键盘录入2执行游客浏览方法,执行后结束程序
4.3 如果键盘录入其他整数,提示"请输入正确浏览方式!",并跳回初始提示界面

    推荐阅读