前面我们学习String类的一些方法,主要有两类,判断功能和获取功能。接下来,我们利用2个练习题来学会使用String类提供的方法去解决实际的问题。
1.字符串的遍历
遍历这个功能真的是太常用,而且真的是很多面试题的能解答出来的前提条件。目前我们只知道利用for循环去实现遍历输出。
package string;
public class Demo3_String {
public static void main(String[] args) {
String st = "Anthony";
for (inti = 0; i < st.length(); i++) {
System.out.print(st.charAt(i)+ " ");
}
}
}
输出结果:A n t h o n y
2.统计字符出现次数
这个问题,相信很多人都在面试过程中遇到过。目前我们只讨论利用String类的方法去实现,集合类的方法我们还没有学习到,先不管HashMap这样的实现代码。
需求:一个长字符串,里面包含大写字母,小写字母还有数字,还有其他符号,要求统计出大写字母,小写字母,数字,和其他字符出现次数。例如字符串是这样:AUFEOADFeigeraeg2H424D&bh$3dw#
分析:
1.字符串是由字符组成,字符都是有范围,可以通过范围来判断是否包含该字符
2.如果包含就让计数器变量自增
具体代码实现如下(注释里面步骤和分析步骤结合着看)
package string;
public class Demo3_String {
public static void main(String[] args) {
String st = "AUFEOADFeigeraeg2H424D&bh$3dw#";
// 定义分类的计数器
int big = 0; //用来统计大写字母个数
int small = 0; //用来统计小写字母个数
int num = 0; //用来统计数字个数
int other = 0; //用来统计其它字符个数
// 1. 利用for循环遍历,拿到每一个字符
for (int i = 0; i < st.length(); i++) {
char c = st.charAt(i); // 获取到每个字符
// 2.对字符进行分类判断,判断是否在对应范围内
if(c >= 'A' && c <= 'Z') {
big++; // 如果满足大写字母条件,对应计数器自增
}else if (c >= 'a' && c <= 'z') {
small++; // 如果满足小写字母条件,对应计数器自增
}else if (c >= '0' && c <= '9') {
// 注意这里不能这样写 c >= 0 && c <= 9,因为'0'是一个字符
num++; // 如果满足是数字,对应计数器自增
}else {
other++;
}
}
// 3. 打印不同类型的计数器
System.out.println(st + "中大写字母出现 " + big + "次,小写字母出现 " + small
+"次,数字出现 "+ num+ "次,其他字母出现 "+other +"次");
}
}
运行结果:
AUFEOADFeigeraeg2H424D&bh$3dw#中大写字母出现 10次,小写字母出现 12次,数字出现 5次,其他字母出现 3次
上面的需求是分类统计,如果出现分别统计每个字符出现个数,那么就要在这个基础上,引入数组,或者集合里面的Map。详情可以看这一篇:https://blog.csdn.net/u011541946/article/details/78304192