String 相关
1.定义一个测试类:
类名:Test2
编写主函数:
1.定义一个字节数组, 内容为97,98,99
2.定义一个字符串引用s1,使用字符串中的参数为字节数组的构造方法创建字符串对象,传入字节数组
3.定义一个字符串引用s2,使用字符串中的参数为字符串的构造方法创建字符串对象, 传入参数"helloworld"
4.定义一个字符数组,内容为 'a','b','c'
5.定义一个字符串引用s3,使用字符串中的参数为字符数组的构造方法创建字符串对象,传入字符数组
6.在控制台中输出s1 , s2, s3 的内容
2.定义一个测试类:
类名:Test3
编写主函数:
1.定义一个字符串引用s1, 赋值为 "itheima"
2.调用字符串中的方法判断s1中是否包含"ma",并在控制台输出该结果
3.调用字符串中的方法判断s1是否以"hei"开头,并在控制台输出该结果
4.调用字符串中的方法判断s1是否以".txt"结尾,并在控制台输出该结果
5.调用字符串中的方法判断s1内容是否为空,并在控制台中输出结果
5.调用字符串中的方法判断s1内容是否与"heima"相同,并在控制台中输出结果
3.定义一个测试类:
类名:Test4
编写主函数:
1.定义一个字符串引用s, 赋值为 "itheima"
2.调用字符串中的方法,获取字符串的长度,并在控制台中输出结果
3.调用字符串中的方法,获取字符串中'h'出现的位置,并在控制台中输出结果
4.调用字符串中的方法,获取字符串中"ma"出现的位置,并在控制台中输出结果
5.调用字符串中的方法,获取字符串中'i'最后出现的位置,并在控制台中输出结果
6.调用字符串中的方法,获取字符串中从第二个位置到最后位置的内容,并在控制台中输出结果
7.调用字符串中的方法,获取字符串中从第二个位置到第四个位置的内容,并在控制台中输出结果
8.调用字符串中的方法,把字符串中的"hei"替换成"bai",并在控制台中输出结果
4.需求:编写一个程序打印1到100之间的整数,但数字包含7的或者是7的倍数要跳过,例如:7,14,27(十分钟)
思路:
1)首先要for循环遍历1到100,
2)然后进行判断,如果%7!=0就打印,
3)再判断十位数是不是7是就打印,
4)再判断个位数是不是7是就打印
5. 从键盘录入一个字符串,统计该串中有大写字母、小写字母、数字各有多少个。
举例:
Hello12345World
6.分析以下需求,并用代码实现:
(1)定义数字字符串数组{"010","3223","666","7890987","123123"}
(2)判断该数字字符串数组中的数字字符串是否是对称(第一个数字和最后一个数字相等,
第二个数字和倒数第二个数字是相等的,依次类推)的,并逐个输出
(3)如:010 是对称的,3223 是对称的,123123 不是对称的
提示:循环获取字符串的每一个字符,依次比较第一个和最后一个,第二个和倒数第二个。。。
7.分析以下需求,并用代码实现:
(1)定义如下方法public static String getPropertyGetMethodName(String property);
(2)该方法的参数为String类型,表示用户给定的成员变量的名字,返回值类型为String类型,返回值为成员变量对应的get方法的名字
(3)如:用户调用此方法时给定的参数为"name",该方法的返回值为"getName"
8.请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母
9.编写程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,并将所有已输入的字符串倒序打印
10.编写一个学生封装类Student[包含name,age,sex,address私有属性,共有的方法]
创建3个Student对象,并给其属性赋值
定义功能:把Student对象转为字符串,最后打印字符串
要求输出字符串格式如下:
[name=”xxx”,age=xx,sex=’x’,address=”xxxxx”],
[name=”xxx”,age=xx,sex=’x’,address=”xxxxx”],
[ name=”xxx”,age=xx,sex=’x’,address=”xxxxx”]
11.分析以下需求,并用代码实现:
(1)模拟Arrays.toString(int[] arr);方法,自己封装一个public static String toString(int[] arr);
(2)如果int类型数组arr为null,toString方法返回字符串"null"
(3)如果int类型数组arr长度为0,toString方法返回字符串"[]"
(4)如果int类型数组arr的内容为{1,2,3,4,5},toString方法返回字符串"[1, 2, 3, 4, 5]"
12.分析以下需求,并用代码实现:
(1)有一个数字字符串"25 11 -6 20 102 9",数字之间用空格间隔
(2)利用冒泡排序对这串数字按照从小到大排序,生成一个数值有序的字符串"-6 9 11 20 25 102"
(3)提示:用String类提供的split方法(用" "(空格)作为split方法的参数来切割),然后生成对应的数字字符串数组
13.分析以下需求,并用代码实现:
(1)键盘录入一个小数,要求小数点后的小数位最少2位
(2)定义方法,实现保留小数点后的两位小数(只舍不进)
(3)如:输入5.6789 输出5.67,输入5.67389 输出5.67 (提示:使用 "\\."切割字符串)
14.分析以下需求,并用代码实现:
(1)打印由7,8,9三个数组组成的三位数,要求该三位数中任意两位数字不能相同
(2)打印格式最后的三位数字以空格分隔,如789 798 879 897 978 987
15. 需求:算一下你来到这个世界多少天?
* 分析:
* 1,将生日字符串和今天字符串存在String类型的变量中
* 2,定义日期格式化对象
* 3,将日期字符串转换成日期对象
* 4,通过日期对象后期时间毫秒值
* 5,将两个时间毫秒值相减除以1000,再除以60,再除以60,再除以24得到天
16. 需求:键盘录入任意一个年份,判断该年是闰年还是平年
* Calendar c = Calendar.getInstance();
*
* 分析:
* 1,键盘录入年Scanner
* 2,创建Calendar c = Calendar.getInstance();
* 3,通过set方法设置为那一年的3月1日
* 4,将日向前减去1
* 5,判断日是多少天,如果是29天返回true否则返回false
17. 需求:把字符串反转
举例:键盘录入"abc"
输出结果:"cba
18. 需求:模拟登录,给三次机会,并提示还有几次。
* 用户名和密码都是admin
* 分析:
* 1,模拟登录,需要键盘录入,Scanner
* 2,给三次机会,需要循环,for
* 3,并提示有几次,需要判断,if
19. 需求:统计大串中小串出现的次数 这里的大串和小串可以自己根据情况给出
//定义大串
String max = "woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma";
//定义小串
String min = "heima";
=========================================================================================================================
集合相关
1.分析以下需求,并用代码实现:
(1)生成10个1至100之间的随机整数(不能重复),存入一个List集合(可以先不适用泛型,泛型明天讲)
(2)编写方法对List集合进行排序,禁用Collections.sort方法和TreeSet
(2)然后利用迭代器遍历集合元素并输出
(3)如:15 18 20 40 46 60 65 70 75 91
2.分析以下需求,并用代码实现:
(1)定义List集合,存入多个字符串
(2)删除集合中字符串"def"
(3)然后利用迭代器遍历集合元素并输出
3.分析以下需求,并用代码实现:
(1)定义List集合,存入多个字符串
(2)删除集合中包含0-9数字的字符串(只要字符串中包含0-9中的任意一个数字就需要删除此整个字符串)
(3)然后利用迭代器遍历集合元素并输出
4.分析以下需求,并用代码实现:
(1)定义一个Worker类型(属性私有、空参有参构造、set、get方法、toString方法、equals方法、hashCode方法),
包含三个属性:姓名(String name)、年龄(int age)、工资(double salary),在Worker类中定义work方法打印一句话,
如:"凤姐 正在工作",其中"凤姐"代表当前对象的姓名
(2)定义List集合,在List集合中增加三个员工,基本信息如下:
"凤姐" 18 20000
"欧阳峰" 60 8000
"刘德华" 40 30000
(4)在"欧阳峰"之前插入一个员工,信息为:姓名:"张柏芝",年龄:35,工资3300
(5)删除"刘德华"的信息
(6)利用for 循环遍历,打印List 中所有员工的信息
(7)利用迭代遍历,对List 中所有的员工调用work 方法
(8)为Worker类重写equals 方法,当姓名、年龄、工资全部相等时候才返回true
5.编写一个程序,获取10个1至20的随机数,要求随机数不能重复。并把最终的随机数输出到控制台(提示: 使用 Random 类与 HashSet)
6.使用Scanner从键盘读取一行输入,去掉其中重复字符, 打印出不同的那些字符(例如: aaaabbbcccddd, 输出的是abcd 提示: 使用 HashSet)
7.去除List集合中的重复元素
思路:
* 1,创建一个LinkedHashSet集合
* 2,将List集合中所有的元素添加到LinkedHashSet集合
* 3,将list集合中的元素清除
* 4,将LinkedHashSet集合中的元素添加回List集合中
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("a");
list.add("a");
list.add("b");
list.add("b");
list.add("b");
list.add("c");
list.add("c");
list.add("c");
list.add("c");
8.在一个集合中存储了无序并且重复的字符串,定义一个方法,让其有序(字典顺序),而且还不能去除重复
思路:
* 1,创建TreeSet集合对象,因为String本身就具备比较功能,但是重复不会保留,所以我们用比较器
* 2,将list集合中所有的元素添加到TrreSet集合中,对其排序,保留重复
* 3,清空list集合
* 4,将TreeSet集合中排好序的元素添加到list中
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("aaa");
list.add("ccc");
list.add("ddd");
list.add("fffffffffff");
list.add("heima");
list.add("itcast");
list.add("bbbb");
list.add("aaa");
list.add("aaa");
9.从键盘接收一个字符串, 程序对其中所有字符进行排序,例如键盘输入: helloitcast程序打印:acehillostt
分析:
* 1,键盘录入字符串,Scanner
* 2,将字符串转换为字符数组
* 3,定义TreeSet集合,传入比较器对字符排序并保留重复
* 4,遍历字符数组,将每一个字符存储在TreeSet集合中
* 5,遍历TreeSet集合,打印每一个字符
10.程序启动后, 可以从键盘输入接收多个整数, 直到输入quit时结束输入. 把所有输入的整数倒序排列打印
分析:
* 1,创建Scanner对象,键盘录入
* 2,创建TreeSet集合对象,TreeSet集合中传入比较器
* 3,无限循环不断接收整数,遇到quit退出,因为退出是quit,所以键盘录入的时候应该都以字符串的形式录入
* 4,判断是quit就退出,不是将其转换为Integer,并添加到集合中
* 5,遍历TreeSet集合并打印每一个元素
11.需求:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台
分析:
* 1,定义一个学生类
* 成员变量:姓名,语文成绩,数学成绩,英语成绩,总成绩
* 成员方法:空参,有参构造,有参构造的参数分别是姓名,语文成绩,数学成绩,英语成绩
* toString方法,在遍历集合中的Student对象打印对象引用的时候会显示属性值
* 2,键盘录入需要Scanner,创建键盘录入对象
* 3,创建TreeSet集合对象,在TreeSet的构造函数中传入比较器,按照总分比较
* 4,录入五个学生,所以以集合中的学生个数为判断条件,如果size是小于5就进行存储
* 5,将录入的字符串切割,用逗号切割,会返回一个字符串数组,将字符串数组中从二个元素转换成int数,
* 6,将转换后的结果封装成Student对象,将Student添加到TreeSet集合中
* 7,遍历TreeSet集合打印每一个Student对象
12. 需求:统计字符串中每个字符出现的次数
分析:
* 1,定义一个需要被统计字符的字符串
* 2,将字符串转换为字符数组
* 3,定义双列集合,存储字符串中字符以及字符出现的次数
* 4,遍历字符数组获取每一个字符,并将字符存储在双列集合中
* 5,存储过程中要做判断,如果集合中不包含这个键,就将该字符当作键,值为1存储,如果集合中包含这个键,就将值加1存储
* 6,打印双列集合获取字符出现的次数
13.分析以下需求,并用代码实现:
(1)定义一个员工类Employee,包含三个属性:姓名(String name)、年龄(int age)、工资(int salary)
(2)创建5个对象装入TreeSet,按照工资从高到底排序输出结果(工资相同,按照年龄从低到高,工资和年龄都相同,
按照姓名字典顺序排列,但是不能去重(姓名、年龄、工资都相同))
14.分析以下需求,并用代码实现:
(1)定义一个TreeSet集合,然后存入6个Double类型的数据,分别是[1.1,5.2,6.3,2.5,5.2,3.3]
(2)不去重,然后遍历输出(从大到小)
15.分析以下需求,并用代码实现:
(1)打印一个字符串的全字符组合情况,原始字符串中没有重复字符
(2)例如:原始字符串是"def", 打印得到下列所有组合情况:
"d" "e" "f" "de" "df" "ed" "ef" "fd" "fe" "def" "dfe" "edf" "efd" "fde" "fed"
提示: 使用 TreeSet
16.分析以下需求,并用代码实现:
(1)定义一个学生类Student,包含属性:姓名(String name)、年龄(int age)
(2)定义Map集合,用Student对象作为key,用字符串(此表示表示学生的住址)作为value
(3)利用四种方式遍历Map集合中的内容,格式:key::value
17.分析以下需求,并用代码实现:
(1)定义一个学生类Student,属性:姓名(String name)、班级班号(String no)、成绩(double score)
(2)将若干Student对象存入List集合,并统计每个班级的总分和平均分
思路:
a.采用面向对象的思想
b.不推荐使用Map<String,List<Student>> 操作不方便
c.推荐使用Map<String,ClassRoom> |
|