通过查阅JDK6的API文档,来解决以下的两个问题,以锻炼自己的英语阅读能力和灵活运用知识的能力。
题一,输出一个字符串中的大写字母,小写字母以及非英文字母的个数。
题二,输出一个字符串中指定字符串出现的次数。
要解决题一,第一步是要把字符串中的字符逐个的取出来,以前的方法是把该字符串放到一个字符的数组里面,通过index指定的数来取出单个的字符。通过查API文档:得Java.lang下面的class String下面有个method叫做charAt看看解释:
char charAt(int index)-Returns the char
value at the specified index( 返回指定序列的字符值)。
char | charAt(int index) Returns the char value at the specified index |
现在把单个字符找出来了,第一种方法是比较单个字符是否是小写字母,此时小写字母计数器就增一,同理,大写字母计数器增一,最后非字母计数器加一。写法如下:
public class Test3 {
public static void main (String [] args) {
String s = "asdfjlJOIfoiHIJIH8985YUIJN";
int count1 =0,count2 = 0,count3 = 0;
for(int i=0;i<=s.length();i++) {
char c =s.charAt[i];
if(c>='a'&&c<='z'){count1++;}
else if(c>='A'&&c<='Z') {count2++;}
else count3++;
System.out.println("该字符串中大写字母个数为"+count1+"个。")
System.out.println("该字符串中小写字母个数为"+count2+"个。")
System.out.println("该字符串的非字母个数为"+count3+"个。")
}
}
}
第二种方法是安排两个字符串,一个大写,一个小写。统计指定字符串在大写和小写字符串里面的出现的次数,就可以得出该字符串中大写,小写和非字母字符出现的次数。写法如下:
public class Test4 {
public static void main (String [] args) {
String Up = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";(设定大写字符串)
String Low = "abcdefghijklmnopqrstuvwxyz";(设定小写字符串)
String S = "sa;lidfjROIHosaijf809890q";(指定字符串)
int Count1 = 0(设定大写字母计数器),Count2 = 0(设定小写字母计数器), Count3 = 0(设定非字母计数器);
for(int i=0;i<=S.length();i++){
char c = S.charAt(i);(逐个取字符)
if(Up.indexOf(c) != -1){
Count1++;
} /*如果在出现大写字符,大写字符计数器就加一
else if(Low.indexOf(c) != -1){
Count2++;
}/*如果在出现小写字符,小写字符计数器就加一
else {Count3++;}
} /*如果在出现非字母字符,非字母字符计数器就加一
System.out.println("该字符串中大写字母个数为"+count1+"个。")
System.out.println("该字符串中小写字母个数为"+count2+"个。")
System.out.println("该字符串的非字母个数为"+count3+"个。")
}
}
第三种方法,注意查API里面的JAVA.lang下面的Class有个Character的method叫做isLowerCase和isUpperCase,看看API里面的解释:
static boolean | isLowerCase(char ch) Determines if the specified character is a lowercase character. |
static boolean | isUpperCase(char ch) Determines if the specified character is an uppercase character. |
顾名思义,判定一个字符是否是大写字母或是小写字母返回True或False。这个的写法就更明确了。
public class Test5 {
public static void main (String [] args) {
String S = "sa;lidfjROIHosaijf809890q";(指定字符串)
int Count1 = 0(设定大写字母计数器),Count2 = 0(设定小写字母计数器), Count3 = 0(设定非字母计数器);
for(int i=0;i<=S.length();i++){
char c = S.charAt(i);(逐个取字符)
if(isUpperCase(c)){
Count1++;
} /*如果在出现大写字符,大写字符计数器就加一
else if(isLowerCase(c)){
Count2++;
}/*如果在出现小写字符,小写字符计数器就加一
else {Count3++;}
} /*如果在出现非字母字符,非字母字符计数器就加一
System.out.println("该字符串中大写字母个数为"+count1+"个。")
System.out.println("该字符串中小写字母个数为"+count2+"个。")
System.out.println("该字符串的非字母个数为"+count3+"个。")
}
}
总结:通过讨论这三种方法实现统计一个字符串中大写字母,小写字母出现的次数,一是回顾以前的一些传统方法,二是锻炼自己查API及运用方法的能力。
2,下面开始解决第二个问题——输出一个字符串中指定字符串出现的次数。基本方法是先指定字符串,然后在给出的字符串中间找到该字符串,然后在往后找。找到指定字符串之后截掉前面的继续找。
可以用到前面说过的indexOf的方法和一个截掉字符串的方法subString,老规矩还是先查API文档。
String | substring(int beginIndex) Returns a new string that is a substring of this string. |
程序如下:
public class Test6{
pulic static void main(String [] args){
String Or = "sjavasunjavawebjavaeclipse";/*原来的字符串*/
String find = "java";/*要寻找的字符串*/ /**/
int Count = 0; /*设定出现次数计数器*/
While(S.indexOf(find) != -1){
Count++; /*找到指定字符串计数器加一*/
String S = substring(Or.indexOf(find)+find.lenght()); /*位号为find变换后的位号*/
}
System.out.println("java出现了"+Count+"次。");
}
}
}